易妖游戏网
您的当前位置:首页Java中的继承

Java中的继承

来源:易妖游戏网

继承
/*
继承就是共性抽取
在继承的关系中,“子类就是一个父类”。也就是说,子类可以当做一个父类来看待
public class 子类名称 extends 父类名称{}
私有属性不会被继承;

局部变量,成员变量,父类变量同名的情况:
局部变量:直接使用变量名;
本类成员变量:this.成员变量名;
父类变量:super.成员变量名;

在父子类的继承关系里,创建子类对象,访问成员方法的规则:
创建的是谁,就优先用谁,如果没有,就向上找;
无论是成员变量还是成员方法,如果没有,都是向上找不会向下找子类的;

重写和重载的区别:
重写(覆盖):方法名称一样,参数列表也一样;
重载:方法名称一样,参数列表不一样;

方法覆盖的注意事项:
1.父子类的方法的名称必须相同,参数列表也相同。
把@Override写在覆盖方法前面,能有效检测方法是否正确覆盖重写
2.子类的返回值范围必须【小于等于】父类的范围。
比如:String小于Object
3.子类方法的权限必须【大于等于】父类方法的权限
public>protected>(default)>private
(default)是指什么都不写,不是关键字
*/
例如:
创建一个Person父类:

public class Person {
     String name;
     int age;
     int id;
     String address="贵州省遵义市绥阳县";
    public void method1(){
        System.out.println("父类方法1");
    }
}

子类Student和Teacher类继承Person类

public class Student extends Person {
    public Student(String name,int age,int id) {
        this.name=name;
        this.age=age;
        this.id=id;
    }
    String address="贵州省遵义市";
    //区分成员变量、局部变量、父类变量的方法
    public void method2(){
        String address="贵州省";
        System.out.println("这是子类的方法");
        System.out.println(address); //局部变量
        System.out.println(this.address);//本类变量
        System.out.println(super.address);//父类变量
    }

}

Teacher类:

public class Teacher extends Person {
    String address="";
    public Teacher(){
    }
    public void method2(){
        System.out.println("这是老师可以教学生的方法");
    }
}

在继承中注意:
对于已经使用过的类,尽量不要修改,推荐定义一个新的类,来重复利用共性的内容,并添加改动的新内容
super关键字。用于子类继承父类的变量或方法

继承关系中,父子类构造方法的特点:
1.子类的构造方法当中有一个默认隐含的“super()”调用,所以一定先调用父类的构造方法,在执行子类的构造方法
2.子类构造可以通过super关键字来调用父类重载构造
3.super的父类构造调用,必须是子类构造方法的第一句,不能一个子类构造调用多次super构造

super关键字的三种使用方法:
1.在子类成员方法中,访问父类的成员变量;
2.在子类的成员方法中,访问父类的成员方法;
2.在子类的构造方法中,访问父类的构造方法;

因篇幅问题不能全部显示,请点此查看更多更全内容