Java面向对象三大特性之继承

入口

 

  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所有的公开方法和属性。

    继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。

    继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。

    子类和父类之间,从意义上讲应该具有"is a"的关系。

    java类只有单继承,没有多继承。(一个儿子只能有一个爸爸,但是一个爸爸可以有多个儿子)

    快捷键:Ctrl + H 打开继承关系树(结构)

  1. 示例:

  2. 实例:
    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关键字 调用父类的方法
        }
    }

     

posted @ 2020-09-27 13:28  无明之辈  阅读(157)  评论(0编辑  收藏  举报