欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

继承

程序员文章站 2022-07-15 16:50:20
...

什么是继承?

继承:就是子类继承父类的属性和成员方法,使得子类具有和父类相同的属性,相同的行为
子类可以直接访问父类的非私有的属性和行为

继承的好处?

1. 提高代码的复用率
2. 类与类之间产生了联系,是多态的前提;

不能继承什么?

不能继承父类的私有属性和方法和构造器

如何使用父类中私有属性?

因为不能直接继承父类的私有属性,但是可以通过继承父类的setxx()和getxx()方法,
从而控制父类的私有属性;

为什么需要先初始化父类?

因为不能继承父类的构造器,但是类在使用之前都需要初始化,所以如果子类的构造器
中没有调用父类的构造方法时,系统会自动调用父类的构造方法对父类进行初始化;

如何初始化父类?

1. 没有自定义父类的构造函数
	系统会自定义父类的构造函数,对父类进行初始化;
2. 如何自定义父类的构造函数
	在子类构造函数的第一行使用super();调用父类构造函数对父类进行初始化;
public class Fu {
    public int num = 1;
    public Fu(){
        System.out.println("调用了父类的构造方法");
    }
    public Fu(int a){
        System.out.println(a);
    }
}




public class Zi extends Fu {
    public int num = 5;

    public static void main(String[] args) {
        Zi zi = new Zi(2);

    }
    public Zi(){
        super(2);//调用父类的构造方法,必须在子类的构造函数内的第一句
//        this();//this用于调用自己的构造函数,必须也再构造函数第一句
        int num = 10;
        System.out.println("调用了子类的构造方法");
        System.out.println(super.num);//1 父类的成员属性num=1
        System.out.println(num);//10 就近原则
        System.out.println(this.num);//5 本类的成员属性num=5
    }
    public Zi(int a){
        super();//只要是子类的构造方法的第一行即可
    }
}

继承需要注意的问题?

1. Java支持单继承,即一个子类只能继承一个父类,但是一个父类可以被多个子类继承
2. 若子类定义了一个和父类相同名称的属性时,需要使用super.属性名来调用父类属性
3. 若子类定义了一个和父类同名称(返回值类型,方法名,参数列表都相同)
	会重写(覆盖)父类的方法;
4. 若子类定义了一个和父类同名称(只是名称相同),会重载该方法;

this关键字和super关键字

1.this关键字是表示本类的
2.super关键字是表示父类的
3.super()父类的构造函数,必须放在子类构造函数的第一句
4.this()子类的构造函数,必须放在子类的构造函数的第一句