1.继承中方法的重写
重写(override)
概念:在继承关系中,方法的名称一样,参数列表也一样
重写(overide):方法的名称一样,参数列表【也一样】。也叫方法的覆盖,覆写。
重载(overload):方法的名称一样,参数列表【不一样】
方法覆盖重写的特点:创建的是子类对象,则优先用子类方法。
2.方法覆盖重写的注意事项:
2.1必须保证父子类之间的方法的名称相同,参数列表也相同
@override:写在方法的前面,用来检测是不是有效的正确覆盖重写
这个注释就算不写,只要满足要求,也是正确的方法覆盖重写
2.2.子类方法的返回值必须【小于等于】父类方法的返回值类型
小扩展:java.lang.object类是所有类的公共最高父类。java.lang.String就是object的子类
2.3子类方法的权限必须【大于等于】父类方法的权限修饰符。
小扩展:public>protected>(default)>private
备注:(default)不是关键字default,而是什么都不写,留空。
3.手机案例
1 public class Phone {
2 //老手机
3 public void call(){
4 System.out.println("打电话");
5 }
6 public void send(){
7 System.out.println("发短信");
8 }
9 public void show(){
10 System.out.println("显示号码");
11 }
12 }
13
14
15
16 //定义的一款新手机,使用老手机作为父类。
17 public class NewPhone extends Phone {
18 @Override
19 public void show(){
20 System.out.println("显示号码");
21 System.out.println("显示图片");
22 }
23
24 }
25
26
27
28
29 public class Demo01Phone {
30 public static void main(String[] args) {
31 Phone p1 = new Phone();
32 p1.call();
33 p1.send();
34 p1.show();
35 System.out.println("________________________");
36
37 NewPhone np = new NewPhone();
38 np.call();
39 np.send();
40 np.show();
41
42 }
43 }
4.继承中构造方法的访问特点
继承关系中,父子类构造方法的访问特点:
1.子类构造方法当中有一个隐含的“super()”调用,所以一定是先调用父类构造,后执行子类构造
2.子类构造可以通过super关键字来调用父类重载构造。
3.super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super构造
总结:子类必须调用父类构造方法,不写则赠送super(),写了则用写的指定super调用,super只能有一个,还必须是第一个。
1 public class Fu0 {
2 public Fu0(){
3 System.out.println("父类无参构造");
4 }
5 public Fu0(int num){
6 System.out.println("父类有参构造!");
7 }
8 }
9
10
11
12 public class Zi0 {
13 public Zi0(){
14 super(); //在调用父类无参构造方法
15 // super(20);//在调用父类重载的构造方法
16 System.out.println("子类构造方法");
17 }
18 public void method(){
19 // super(); //错误写法!只有子类构造方法,才能调用父类构造方法
20 }
21 }
22
23
24 public class DemoConstructor {
25 public static void main(String[] args) {
26 Zi0 zi = new Zi0();
27 }
28
29 }
4.super关键字的三种用法
5.This关键字的三种用法
6.Super和this关键字图解
7 java继承的三个特点