• 欢迎光临~

继承

开发技术 开发技术 2022-10-02 次浏览

继承

Object类

快捷键:control+h显示继承关系

在Java中,所有的类都直接或间接继承Object类

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

package oop.inherit;

public class Person {
    //public
    //protected
    //default
    //private
    private int money = 10;
    public void say(){
        System.out.println("hello");
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }
}

package oop.inherit;
//Student类继承类Person类,拥有父类的除了private的所有属性和方法
public class Student extends Person{
  //隐藏了super()代码,调用了父类的构造器
  super();//显示定义构造器,只能在父类和子类中选一个
  //this();

}

package oop.inherit;

public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        int m = student.getMoney();
    }
}

super注意点

  1. super调用父类构造方法时,必须在构造方法的第一个
  2. super只能出现在子类的方法或构造方法为中
  3. super和this不能同时调用构造方法
  4. super():调用父类构造方法,this():调用本类构造方法

方法重写

package oop.way.rewrite;

public class B {
    public void test(){
        System.out.println("B");
    }
    public static void test1(){
        System.out.println("static B");
    }
}
package oop.way.rewrite;
//A是B的子类
public class A extends B{
    @Override
    public void test() {
        System.out.println("A");
    }
    public static void test1(){
        System.out.println("static A");
    }
}
package oop.way.rewrite;

public class Rewrite {
    public static void main(String[] args) {
        //非静态方法:子类重写类父类方法,方法的调用和右边类型有关
        A a = new A();
        a.test();
        B b = new A();//父类的引用指向子类
        b.test();


        //静态方法:方法的调用只和左边的类型有关
        A a1 = new A();
        a.test1();
        B b1 = new A();
        b.test1();
    }
}

输出结果:

A
A
static A
static B

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

  1. 方法名相同
  2. 参数列表相同
  3. 修饰符范围只能扩大不能缩小(大口袋接小口袋):抛出的异常:ClassNotFoundException
程序员灯塔
转载请注明原文链接:继承
喜欢 (0)