Java核心技术_笔记5-1

1.继承
子类extends父类

2.继承后可以添加新方法,新域,覆盖方法。但不能删减

3.覆盖方法
子类不能直接访问超类的私有域,private只能在自己类中使用,被继承的子类无法直接调用。
若是public或者都不加,可以直接在子类中调用变量

调用利用接口
int getfuck()
{ return fuck;}
子类中super.getfuck()

4.
子类声明了与父类完全一样的成员变量,也不会覆盖掉父类的成员变量。而是在子类实例化时,会同时定义两个成员变量,子类也可以同时访问到这两个成员变量(this.i&super.i),但父类不能访问到子类的成员变量(父类不知道子类的存在)。

而具体在方法中使用成员变量时,究竟使用的是父类还是子类的成员变量,则由方法所在的类决定;即,方法在父类中定义和执行,则访问的是父类的成员变量,方法在子类中定义(包括覆盖父类方法)和执行,则访问的是子类的成员变量。

5.子类建立构造器
Fuck(int a){
super(a);//必须在第一条
}
第一句函数用super表示调用父类的构造器
由于不能访问父类私有域,所以用构造器进行私有域初始化

6.
超类中构造器没有参数时,子类构造器若没有显式调用,则会自动创建
超类中构造器有参数时,子类构造器若没有显式调用会出错

7.
this:
(1)作为隐式参数
(2)调用同类的其他构造器

super:
(1)调用父类的方法
(2)调用父类的构造器

8.一个对象变量,可以指示多种实际类型的现象称为多态

被覆盖过的方法可以用父类对象调用,但子类的新方法不行
Parent有A方法
Children有A(覆盖了父类)和B方法

Parent parent=new Parent();
Parent children=new Children();

parent调用Parent的A方法,children调用Children的A方法(不一样)
children不能调用B方法

9.父类变量可以引用子类对象
子类可以赋值给父类,反之不行

10.方法的名字 和 参数 构成方法的签名
f(int a) f(String a) 签名不同

若子类定义和父类签名相同的方法,则覆盖

11.返回类型不是签名的一部分,覆盖时要保持兼容性
Parent getfood(){}
用Children getfood(){}覆盖

12.
方法调用过程
(1)查找声明类型和方法名
(2)查找所有名符合的方法的参数匹配
(3)private static final编译器指导怎么调用
调用方式称为静态绑定
(4)动态绑定中,查看是否有实际类型中匹配的方法,有
就调用,么有就在父类查找,以此类推

13.
子类方法不能低于超类方法的可见性
超类public子类必须public

14.
不允许继承 final:不会在子类中改变语义
final类 中 所有方法变为final方法,不包括域
单独定义final方法

15.
子类的引用赋值给超类,变量允许
parent=children
超类引用赋值给子类,要强制类型转换
children=(Children)parent

超类转换子类前用instanceof检查
parent instanceof Parent true
children instanceof Parent true
parent instanceof Children false
children instanceof Children true

16.
abstract抽象方法充当占位的角色,具体实现在子类
一个或多个抽象方法的类必须是抽象的
有抽象方法必须有抽象类
定义抽象类不一定有抽象方法

17.
抽象类不能被实例化
但可以声明
抽象类Person,非抽象子类实例Student
Person p=new Student();

猜你喜欢

转载自blog.csdn.net/Matrix576/article/details/82346764
今日推荐