继承以及重写的知识

继承

  • 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模

  • extends的意思是“拓展”。子类是父类的拓展

  • Java中只有单继承,没有多继承

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

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

  • 子类和父类之间。从意义上将应该具有“is a”的关系

Super详解

  • super的注意点:

    • super调用父类的构造方法,必须是在构造方法的第一个;

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

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

  • 和this的区别

    • 代表的对象不同

      • this:本身调用着这个对象

      • super:代表父类对象的应用

    • 前提:

      • this:没有继承也可以使用

      • super:只有在继承条件下才能使用

    • 构造方法

      • this():本类的构造

      • super():父类的构造

package J基础语法.oop.Oop08;

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


------------------------------
    public class Person {
    public Person() {
        System.out.println("Person无参执行了");
    }
protected String name="林夕";
public void print(){
    System.out.println("Person");
}
}
-----------------------------------
    public class Student extends Person{
    public Student() {
        System.out.println("Student无参执行了");
    }

    private String name="花海";
    public void print(){
        System.out.println("Student");
    }
    public void test1(){
       print();
       this.print();
       super.print();
    }
    public void test(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }
}
---------------------------
    public class Teacher extends Person{
}

重写

  • 需要有继承关系,子类重写父类的方法

    • 方法名必须相同

    • 参数列表必须相同

    • 修饰符:范围可以扩大但不能缩小:public>Protected>Default>Exception

    • 抛出的异常:范围,可以被缩小但不能扩大

  • 重写:子类的方法必须和父类一致:方法体不同

  • 为什么要重写

    • 父类的功能,子类不一定需要,或者不一定满足

public class Application {
    //静态方法和非静态方法区别很大
    public static void main(String[] args) {

//静态方法:方法的调用只和左边有关,与定义的数据类型无关
  //非静态方法 :重写
        A a=new A();
  a.test();
  //父类的引用指向了子类
  B b=new A();
  b.test();
    }
}
---------------------------------
    
public class A extends B {
    @Override
    //重写的意思
    public void test() {
        System.out.println("A=>test()");
    }
    -------------------------------
        //重写都是方法的重写,和属性无关
public class  B {
    public void test(){
        System.out.println("B=>test()");
    }
    }

你可能感兴趣的:(java,开发语言)