学习内容
复习
非静态方法需要创建对象才能调用。
this代表当前对象的引用。
- 代码块
静态代码块属于类,只加载一次。
构造代码块,创建一次执行一次。 - 继承
一个类只能继承另外一个类
子类只能继承父类中非私有的代码
如果子类中变量名与父类中相同,只调用子类中变量。 - 类的加载顺序
父类静态代码》子类中静态代码》父类成员代码》父类构造方法》子类中成员代码》子类构造方法。
创建对象一定会调用父类中的构造器,
默认会调用父类中的无参构造器;
如果父类没有无参构造器,需要开发人员手动调用。
this调用本类中的
Super.xxx调用父类,只能访问父类中非私有的。
(构造器中第一行)
Super();父类中的构造器。
This();
方法重写与重载的区别
方法的重写overwrite
子类覆盖父类方法 方法重写
- 方法名发生在子父类之间;
- 参数列表必须一样,方法名一样。
- 返回值类型必须一模一样。
- 可见范围只能大或者相同,不能小。
- 抛出的异常只能一样或者比父类中异常小。
方法的重载overload
- 发生在一个类中
- 方法名相同
- 与返回值无关
- 与参数列表有关
final关键字
final能修饰 类 变量 方法
final修饰的类只能继承,不能够被继承
final修饰的方法不能够重写
final修饰的变量只能赋值一次,一定要手动赋值,默认值不算。
双亲委托机制
jvm首先会到jdk里面看有没有这一个类,如果有编译报错,没有就编译通过。
如果说自己定义的类与jdk里面的类重复,就会覆盖,不重复,不覆盖,全类名最好不要与jdk冲突。
练习
- 请总结:方法重载和方法重写的区别
答:- )方法的重写overwrite 子类覆盖父类方法 方法重写
1.方法名发生在子父类之间;
2.参数列表必须一样,方法名一样。
3.返回值类型必须一模一样。
4.可见范围只能大或者相同,不能小。
5.抛出的异常只能一样或者比父类中异常小。 - )方法的重载overload
1.发生在一个类中
2.方法名相同
3.与返回值无关
4.与参数列表有关
- )方法的重写overwrite 子类覆盖父类方法 方法重写
- 有一个类A,有以下两个构造方法
public A(){}
public A(){
super();
}
上述两个构造器有没有区别,为什么?
答:基本上没有区别。因为super();调用的是父类的无参构造方法,而系统会默认补一个super()。 - 阅读代码题
class Father { public int n; } public class Son extends Father{ public int n = 22; //n=22 public void show