微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IDEA-继承的基本概念、父子类定义的格式、

面对对象的三大特征:封装性、继承性、多态性。
继承是多态的前提,如果没有继承,就没有多态。
继承主要解决的问题就是:共性抽取
继承关系当中的特点:
1.子类可以拥有父类的“内容”。
2.子类还可以拥有自己专有的内容

父类也可以叫基类、超类。
子类也可以叫派生类。

父类、子类定义的格式:
在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当做父类看待。
例如父类是员工,子类是讲师,那么“讲师就是一个员工”。关系:is a

定义父类的格式(一个普通的类定义
public class 父类名称 {
//…
}

定义子类的格式:
public class 子类名称 extends 父类名称 {
//…
}

public class Demo01Extends {

    public static void main(String[] args) {
        //创建了一个子类对象
        Teacher teacher = new Teacher();
        //Teacher类当中虽然什么都没写,但是会继承来自父类的method方法。
        //调用继承下来的Employee的method方法
        teacher.method();

        //创建另一个子类对象,助教
        Assistant assistant = new Assistant();
        Assistant.method();
    }

}

继承关系
在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:

直接通过子类对象访问成员变量:
等号左边是谁,就优先用谁,没有则向上找
间接通过成员方法访问成员变量:
方法属于谁,就优先用谁,没有则向上找

public class Demo01ExtendsField {

    public static void main(String[] args) {
        Fu fu = new Fu();//创建父类对象
        System.out.println(fu.numFu);//只能使用父类的东西,没有任何子类内容

        Zi zi = new Zi();
        System.out.println(zi.numFu);//10
        System.out.println(zi.numZi);//20

        //直接访问等号左边是谁,就优先用谁,没有则向上找
        System.out.println(zi.num);//200
        System.out.println(fu.num);//100
//      System.out.println(zi.abc);//向上找父类也没有对象,编译报错
        System.out.println("================");

        //这个方法是子类的,优先用子类的,没有再向上找
        zi.methodZi();//200
        //这个方法是在父类当中定义的
        zi.methodFu();//100
    }
}

public class Fu {

    int numFu = 10;
    int num = 100;

    public void methodFu() {
        //使用的是本类当中的,不会向下找子类的。
        System.out.println(num);
    }
}

public class Zi extends Fu {

    int numZi = 20;
    int num = 200;

    public void methodZi() {
        //因为本类当中有num,所有这里用的是本类的num
        System.out.println(num);
    }
}

区分子类方法中重名的三种变量

局部变量:           直接写成员变量名
本类的成员变量:      this.成员变量名
父类的成员变量:      super.成员变量名
public class Demo01ExtendsFiled {

    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.method();
    }
}
public class Zi extends Fu{
    int num = 20;

    public void method() {
        int num = 30;
        System.out.println(num);//30
        System.out.println(this.num);//20本类的成员变量
        System.out.println(super.num);//10父类的成员变量
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐