Day09_面向对象 继承

继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
  • extends的意思是“扩展”。子类是父类的扩展。
  • JAVA中类只有单继承,没有多继承!一个儿子只能有一个爸爸,但是一个爸爸可以有多个儿子
  • 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。
  • 继承关系的俩个类,一个为子类(派生类)一个为父类(基类)。子类继承父类,使用关键字extends来表示。
  • 子类和父类之间,从意义上讲应该具有"is a"的关系.
  • object类
  • super
  • 方法重写
package com.oop.Demo05;

//在java中,所有的类,都默认直接或间接继承Object
//Person    人:父类
public class Person /*extends Object*/{
    public Person(){
        System.out.println("Person无参执行了");
    }
    protected String name = "kuangshen";
    //私有的东西无法被继承
    public void print(){
        System.out.println("Person");
    }
}
package com.oop.Demo05;

//学生 is 人:派生类,子类
//子类继承了父类,就会拥有父类的全部方法!
public class Student extends Person {
    //Ctrl + H查看继承
    public Student() {
        //隐藏代码:调用了父类的无参构造
        super();//调用了父类的构造器,必须要在子类构造起的第一行

        System.out.println("Student无参执行了");
    }
    public Student(String name) {
        this.name = name;
    }
    private String name = "柠檬";
    public void print(){
        System.out.println("Student");
    }
    public void test1(){
        print();    //Student
        this.print();//Student
        super.print();//person
    }
    public void test(String name){
        System.out.println(name);//lemon1
        System.out.println(this.name);//柠檬
        System.out.println(super.name);//lemon
    }
}
package com.oop;


import com.oop.Demo05.Student;

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        //student.test("lemon1");
        //student.test1();
    }
}

笔试面试题

super注意点:

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

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

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

Vs this:

代表的对象不同:

this:本身调用者这个对象

super:代表父类对象的应用

前提

this :没有继承也可以使用

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

构造方法

this();本类的构造

super():父类的构造!

原文地址:https://www.cnblogs.com/lemonlover/p/14037273.html