Java语法之继承

Java语法之继承

1、格式

public class 子类 extends 父类

public class Dog extendes Animals

2、适用情况

如果有两个类A和B,A是B的一种(所属或共同点较多),更适合用继承。

3、继承中变量的访问特点

//父类
public class FatherDemo {
    int age=40;    //父类中的age变量
}

//子类
public class SonDemo extends FatherDemo {
    int height=175;
    int age=20;    //子类中的age变量(成员变量)

    public void show(){
        int age=30; //子类中的age变量(局部变量)
        System.out.println(age);
        System.out.println(height);
    }

}

public class Main {
    public static void main(String[] args) {
        SonDemo demo=new SonDemo();
        demo.show();
    }
}

image-20240122114101197

​ 上述例子中,对于age变量,会先在方法内部找age变量(即:找局部变量),如果方法内部没有age变量就去类的成员变量里找,如果仍然没有,最后才回去父类里寻找,如果父类里还是没有,就会报错,不会去父类的父类里去找。

对于上述代码,如果想输出成员变量的age,则加this关键字,即:this.age,如果想输出父类的变量age,则需要用到super关键字,即:super.age

4、继承中构造方法的访问特点

​ 创建子类对象的时候,会先去访问父类的无参构造方法。因为子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化之前一定要完成父类数据的初始化。每一个子类构造方法的第一条语句默认都是:super()。

5、继承中成员方法的访问特点

​ 通过子类对象访问方法,会在子类成员范围里找,如果找不到,就去父类,如果再找不到,就会报错,不会去父类的父类去找。

6、方法重写

(1)概述

方法重写:子类出现了和父类中一模一样的方法声明。

应用场景:子类需要父类的功能,而功能主题子类有自己特有内容的时候就可以重写父类中的方法, 这样就沿袭了父类的功能,又定义了子类特有的内容。

(2)举例

比如现在有两个类,Phone类(父)和NewPhone类(子),二者均有打电话的功能,而NewPhone类不仅可以打电话,还可以打电话时开启视频功能,这个场景就可以使用继承。新手机沿用了旧手机的打电话功能,又加入了自己开启视频的特性,这种情况就用到了方法的重写。

//父类
public class Phone {
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }
}

//子类
public class NewPhone extends Phone {
    @Override  //一个重写的注解,可以用来检查重写方法是否正确
    public void call(String name) {          //方法的重写
        System.out.println("开启视频功能");
        super.call(name); //父类的call方法
    }
}

public class PhoneDemo {
    public static void main(String[] args) {
        Phone p=new Phone();
        p.call("Lily");
        
        NewPhone np=new NewPhone();
        np.call("Mary");
    }
}

image-20240122123940163

注意:父类中的私有方法不可以被重写。

posted @ 2024-01-23 16:37  6小1  阅读(6)  评论(0编辑  收藏  举报