java继承

java 继承测试:

package java继承;
class Animal {
      void eat() {
        System.out.println("animal : eat");
      }
    }
     
    class Dog extends Animal {
      void eat() {
        System.out.println("dog : eat");
      }
      void eatTest() {
        this.eat();   // this 调用自己的方法
        super.eat();  // super 调用父类方法
      }
    }
     
    public class test {
      public static void main(String[] args) {
        Animal a = new Animal();
        a.eat();
        Dog d = new Dog();
        d.eatTest();
      }
    }

运行结果

package java继承;
class Animal {
      void eat() {
        System.out.println("animal : eat");
      }
    }
     
    class Dog extends Animal {
      void eat() {
        System.out.println("dog : eat");
      }
      void eatTest() {
        this.eat();   // this 调用自己的方法
       // super.eat();  // super 调用父类方法
      }
    }
     
    public class test {
      public static void main(String[] args) {
        Animal a = new Animal();
        a.eat();
        Dog d = new Dog();
        d.eatTest();
      }
    }

运行结果:

通过上边代码,可得到:

①super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

②this关键字:指向自己的引用。

继承的特性

  • 子类拥有父类非private的属性,方法。

  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

  • 子类可以用自己的方式实现父类的方法。

  • //Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类。

不能继承的类:

关键字final,实例变量也可以被定义为 final,被定义为 final 的变量不能被修改。被声明为 final 类的方法自动地声明为 final,但是实例变量并不是 final。

思考题:子类的构造方法在运行之前,必须调用父类的构造方法,不能反过来,原因如下:

构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。
子类拥有父的成员变量和成员方法,如果不先调用父类的构造方法,则从父类继承而来的成员变量和成员方法得不到正确的初始化。

    public class test {
      public static void main(String[] args) {
       System.out.println(new test());
      }
    
}

运行结果:

原文地址:https://www.cnblogs.com/zmh-980509/p/9890064.html