java笔记6继承
来源:互联网 发布:手机图标更换软件 编辑:程序博客网 时间:2024/06/06 21:01
1.用extends关键字来表示一个类继承了另一个类
当子类和父类位于同一个包时:子类继承父类中public,proceted和默认访问级别的成员变量和成员方法
当子类和父类不位于同一个时:子类继承父类中public,protected的成员变量和成员方法
2.java语言不支持多重继承,即一个类只能直接继承一个类
3.所有的java类都直接或间接地继承了java.lang.Object类,Object类是所有类的祖先
因此加入定义一个类时,没有使用extends关键字,那么这个类直接继承Object类
4.方法重载(overload):在同一个类中
重载方法必须满足下列条件:方法名相同,方法的参数类型,个数,顺序至少有一项不同,方法的返回类型可以不同,方法的修饰符可以不相同
public void amethod(int i,String s)
public int amethod(int i,Strings) //不可以
5.方法覆盖(Override)
如果在子类中定义的一个方法,其名称,返回类型及参数签名正好与父类中某个方法的名称,返回类型及参数签名相匹配,那么可以说子类的方法覆盖了父类的方法
子类方法不能缩小父类方法的访问权限(违反了多态性),不能抛出比父类还多的异常(违反了多态性),可以相同或者更少
***父类的静态方法不能被被子类覆盖为非静态方法,子类可以定义与父类静态方法同名的静态方法,以便在子类中隐藏父类的静态方法,注意是隐藏*******
在编译时,子类定义的静态方法也必须满足与方法覆盖类似的约束:方法的参数签名一致,返回类型一致,不能缩小父类的访问权限,不能抛出比父类更多的异常
public class Base
{
voidmethod()
{
System.out.println("method of Base");
}
static voidstaticMethod()
{
System.out.println("static method of base");
}
}
public class Sub extends Base
{
voidmethod()
{
System.out.println("method of sub");
}
static voidstaticMethod()
{
System.out.println("static method of sub");
}
publicstatic void main(String[] args)
{
Base sub1 = new Sub();
sub1.method();
sub1.staticMethod();
Sub sub2 = new Sub();
sub2.method();
sub2.staticMethod();
}
}
结果是:method of sub
static method of base
method of sub
static method of sub
父类的非静态方法不能被覆盖为静态方法
父类的私有方法不能被覆盖
父类的抽象方法可以被子类通过两种途径来实现,一种是实现父类的抽象方法,一种是子类重新声名父类的声明方法
父类的非抽象方法可以被覆盖为抽象方法
可以覆盖父类的方法然后重载多次
当子类和父类位于同一个包时:子类继承父类中public,proceted和默认访问级别的成员变量和成员方法
当子类和父类不位于同一个时:子类继承父类中public,protected的成员变量和成员方法
2.java语言不支持多重继承,即一个类只能直接继承一个类
3.所有的java类都直接或间接地继承了java.lang.Object类,Object类是所有类的祖先
因此加入定义一个类时,没有使用extends关键字,那么这个类直接继承Object类
4.方法重载(overload):在同一个类中
重载方法必须满足下列条件:方法名相同,方法的参数类型,个数,顺序至少有一项不同,方法的返回类型可以不同,方法的修饰符可以不相同
public void amethod(int i,String s)
public int amethod(int i,Strings) //不可以
5.方法覆盖(Override)
如果在子类中定义的一个方法,其名称,返回类型及参数签名正好与父类中某个方法的名称,返回类型及参数签名相匹配,那么可以说子类的方法覆盖了父类的方法
子类方法不能缩小父类方法的访问权限(违反了多态性),不能抛出比父类还多的异常(违反了多态性),可以相同或者更少
***父类的静态方法不能被被子类覆盖为非静态方法,子类可以定义与父类静态方法同名的静态方法,以便在子类中隐藏父类的静态方法,注意是隐藏*******
在编译时,子类定义的静态方法也必须满足与方法覆盖类似的约束:方法的参数签名一致,返回类型一致,不能缩小父类的访问权限,不能抛出比父类更多的异常
public class Base
{
voidmethod()
{
System.out.println("method of Base");
}
static voidstaticMethod()
{
System.out.println("static method of base");
}
}
public class Sub extends Base
{
voidmethod()
{
System.out.println("method of sub");
}
static voidstaticMethod()
{
System.out.println("static method of sub");
}
publicstatic void main(String[] args)
{
Base sub1 = new Sub();
sub1.method();
sub1.staticMethod();
Sub sub2 = new Sub();
sub2.method();
sub2.staticMethod();
}
}
结果是:method of sub
static method of base
method of sub
static method of sub
父类的非静态方法不能被覆盖为静态方法
父类的私有方法不能被覆盖
父类的抽象方法可以被子类通过两种途径来实现,一种是实现父类的抽象方法,一种是子类重新声名父类的声明方法
父类的非抽象方法可以被覆盖为抽象方法
可以覆盖父类的方法然后重载多次
阅读全文
0 0
- java笔记6继承
- java自学笔记6(继承)
- Java 回顾笔记6 (上午)_继承
- JAVA 继承学习笔记
- java 继承-学习笔记
- Java继承学习笔记
- JAVA学习笔记----继承
- JAVA学习笔记-继承
- JAVA学习笔记-继承
- java核心技术笔记 继承
- java笔记09 继承
- Java学习笔记----继承
- java笔记-继承
- Java学习笔记-继承
- java笔记--day08--继承
- Java学习笔记-继承
- JAVA笔记之继承
- JAVA继承学习笔记
- Windows 下maven nexus 3.X 部署,上传jar包
- 基于List实现适配器queue(链式队列)
- Android仿qq实现锁屏消息提醒
- Linux下getopt()函数的简单使用
- MySQL的简单认识
- java笔记6继承
- 【CSS】你不知道的auto
- WebP使用指南
- hihoCoder 第177周
- Python基础4(new版)
- 在Linux上使用Jenkins持续集成JavaWeb项目
- jvm 相关电子书
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
- C++ 结构体细节 c++primer plus例子