2019年9月5日星期四
- 初始化顺序
1)按照书写顺序执行,定义时初始化或者构造代码块
2)统一执行构造方法
2.代码练习(继承)
3.名字的遮挡问题
1)a有歧义,优先局部变量或者形参a,再找属性中的a(本类中的属性a,父类中的属a),最后外部类中的a
2)this.a 有歧义,属性中的a(本类中的属性a,父类中的属性a)
3)super.a 没有歧义,父类的属性a
4)outer.this.a 没有歧义,外部类的属性中的a
4.继承VS组合 与语法无关,主要是设计的角度
5.接口 可认为是一份合同
1)出现的目的:体现封装性 分离契约和实现
2)语法定义:
Interface 接口名称{
Void volumnUp();只给出方法的名称,没有方法的具体实现,是一种抽象方法
}
例:
Interface Collection{
}
Interface List extends Collection,Datastructure{}
接口的定义允许多继承,
接口无法去实现实例化对象,
接口中给出的方法列表默认
① public 访问限定符修饰的
② 无法使用static修饰(有特例)
③ 是一个抽象方法,直接以分号结尾
接口中不能出现属性(可以出现,但默认为是被final static修饰)
例子:
Interface javacourse(
Void 上课();
)
6.final关键字 修饰三个位置
1)修饰变量,不可变变量,只有一次赋值的机会
例final a=10;
A=100会出错
Final int [] a=new int [10];
A) a=new int [100];错误
B) a[0]=100;正确
2)final可以修饰类,表示这个类不能被继承
例:final classA{}
3)修饰方法,表示该方法无法被子类覆写
例:class A{
Final void methed();
}
7.abstract关键字
1)修饰类,表示这个类无法被实例化
2)修饰方法,表示该方法为抽象方法,即只有方法签名,么有方法实现
抽象类不一定有抽象方法,但抽象方法一定有抽象类
抽象方法一旦被实现就不再是抽象方法了
abstractList中只是线性表
8.多态
1)父类型的引用可以指向子类型的对象
① 只有非抽象的类类型能被实例化
② 以返回值的类型体现
③以参数体现
2)引用可以调用的方法有哪些,在编译期间,是根据引用的类型决定的,不是根据对象的类型
3)运行期间真正执行的是哪个方法,看对象类型
4)运行期间真正执行的静态方法,以应用类型为准