Java三大特性之继承

JAVA学习网 2020-09-27 16:02:04

入口

 

  1. super注意点:

    1、super调用父类的构造方法,必须在构造方法的第一个

    2、super必须只能出现在子类的方法或者构造方法中

    3、super和this不能同时调用构造方法

  2. super 和 this 的对比:

    1、代表的对象不同:

    this:本身调用着这个对象

    super:代表父类对象的引用

    2、前提:

    this:没有继承也可以使用

    super:只能在继承条件下才可以使用

    3、构造方法:

    this(); 本类的构造

    super(); 父类的构造

     

     

  3. 实例:
    package oop.demo7;
    
    /**
     * super注意点:
     *  1.super调用父类的构造方法,必须在构造方法的第一个
     *  2.super必须只能出现在子类的方法或者构造方法中
     *  3.super和this不能同时调用构造方法
     * super和this的对比:
     *  代表的对象不同:
     *      this:本身调用着这个对象
     *      super:代表父类对象的引用
     *  前提:
     *      this:没有继承也可以使用
     *      super:只能在继承条件下才可以使用
     *  构造方法:
     *      this(); 本类的构造
     *      super(); 父类的构造
     */
    public class Application {
    
        public static void main(String[] args) {
    
            Student student = new Student();
            student.test("秦疆");
            student.test2();
    
        }
    }
     

父类

 

  1. 初识:

    某一个类B继承了类A

    则说A是B的父类。

    继承后B拥有A所有的公开方法和属性。

  2. 示例:

     

  3. 实例:
    package oop.demo7;
    
    /**
     * Person类:父类
     * 快捷键:Alt + Insert -> Constructor 生成构造器
     */
    public class Person {
    
        //无参构造器
        public Person() {
            System.out.println("父类的Person无参执行了");
        }
    
        protected String name = "kuangshen";
    
        public void print(){
            System.out.println("Person");
        }
    
        //private 私有的 私有东西无法被继承
        private void print2(){
            System.out.println("Person");
        }
    
    }
     

子类:extends关键字继承父类

 

  1. 初识:

    某一个类B继承了类A

    则说B是A的子类/派生类。

    继承后B拥有A所有的公开方法和属性。

  2. 示例:

     

  3. 实例:
    package oop.demo7;
    
    /**
     * 学生 is 人
     * 学生继承人
     * 派生类/子类
     * 子类继承了父类,就会拥有父类的全部方法
     */
    public class Student extends Person {
    
        //无参构造器
        public Student() {
            //super(); 隐藏代码:此处默认调用了父类的无参构造(不写默认调用)
            super(); //调用父类的构造器,必须要在子类构造器的第一行
            System.out.println("子类的Student无参构造器执行了");
        }
    
        private String name = "qinjiang";
    
        public void print(){
            System.out.println("Student");
        }
    
        public void test(String name){
            System.out.println(name); //传入的参数
            System.out.println(this.name); //输出当前类的属性 this关键字
            System.out.println(super.name); //在子类中访问父类的属性 super关键字
        }
    
        public void test2(){
            print(); //调用当前类的方法
            this.print(); //this关键字 调用当前类的方法
            super.print(); //super关键字 调用父类的方法
        }
    }

      

阅读(2498) 评论(0)