Java基础12-继承性的访问特点&抽象类

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

package 进阶.demo06_面向对象2;

public class demo11_继承中构造方法的访问特点 {
    /*构造方法的访问特点:
    * 1. 子类构造方法当中有一个默认隐含的super()调用,所以先执行父类构造,
    *    再执行子类构造方法。
    * 2. 可以通过super关键字来调用父类重载构造
    * 3. super的父类构造调用,必须是子类构造方法中的第一个语句,不能多次调用super()
    * 总结:
    *   子类构造方法必须调用父类的构造方法,不写则默认super();
    *   自定义super(),则需要保证唯一调用且优先调用;保证先调用父类构造,再调用子类构造
    * */
    public static void main(String[] args) {
        demo10_Zi zi = new demo10_Zi();

    }

}

super和this关键字的用法

  • super

    package 进阶.demo06_面向对象2;
    
    public class demo12_super关键字的用法 {
        public static void main(String[] args) {
            /*super关键字用于访问父类内容:
            * 1. 在子类的成员方法中,访问父类的成员变量
            * 2. 在子类的成员方法中,访问父类的成员方法
            * 3. 在子类的构造方法中,访问父类的构造方法
            * */
        }
    }
    
    
  • this

    package 进阶.demo06_面向对象2;
    
    public class demo13_this关键字的用法 {
        public static void main(String[] args) {
            /*this关键字用来访问本类的内容:
            * 1. 在本类的成员方法中,访问本类的成员变量
            * 2. 在本类的成员方法中,访问本类的另一个成员方法
            * 3. 在本类的构造方法中,访问本类的另一个构造方法
            *   注意:
            *       a. this(...) 调用必须是构造方法的第一个语句,且是唯一一个
            *       b. super和this两种构造调用,不能同时使用
            * */
        }
    }
    
    

继承的三个特点

package 进阶.demo06_面向对象2;

public class demo14_Java继承的三个特点 {
    public static void main(String[] args) {
        /*Java继承的三个特点:
        * 1. 单继承:一个类的直接父类只能有唯一的一个
        * 2. 多级继承:一个类的父类也可以有父类
        *   java.lang.Object类是所有类的源类
        * 3. 多子类:一个子类的直接父类是唯一的,但是一个父类可以有多个子类
        * */
    }
}

抽象类

父类

package 进阶.demo06_面向对象2;

public abstract class demo15_抽象类 { // 抽象类
    public static void main(String[] args) {
        /*抽象方法:
        * 如果父类中的方法没有具体的方法体实现,这就是一个抽象方法。
        * 格式:返回值之前加上abstract关键字,去掉方法体
        * 注意:
        * 1. 抽象方法所在的类必须是抽象类
        * 2. 抽象类不能创建对象,如果创建,只能创建非抽象子类的对象
        * 3. 抽象类中可以有构造方法
        * 4. 抽象类中不一定包含抽象方法,但是抽象方法必须是抽象类
        * 5. 抽象类的子类,必须重写父类中的所有抽象方法。
        *
        * 抽象类和方法的使用:
        * 1. 不能直接创建抽象类对象,即不能直接new;
        * 2. 必须用一个子类来继承抽象类。
        * 3. 该继承抽象类的子类必须实现:重写覆盖子类的抽象方法
        *    重新格式: 去掉abstract 加上方法体
        * 4. 创建子类对象进行使用
        * */
    }

    // 抽象方法:
    public abstract void func();

    // 普通方法:
    public static void func1() {

    }


}

子类

package 进阶.demo06_面向对象2;

public class demo16_抽象类子类 extends demo15_抽象类{
    public void func() {
        System.out.println("覆盖重写抽象方法");

    }

    public static void main(String[] args) {
        demo16_抽象类子类 zi = new demo16_抽象类子类();
        zi.func();

    }
}

你可能感兴趣的:(Java,开发语言,后端)