Java基础-继承

使用super关键字

  • 使用super调用超类的构造函数
  • super引用超类的方法或者实例变量

构造函数的调用时机

  在类层次中,从超类到子类按照继承顺序调用构造函数。

动态方法调度

  实现原理:当通过超类引用调用重写的方法时,Java根据在调用时所引用对象的类型来决定调用哪个版本的方法。

  

public class A {
    void callme() {
        System.out.println("Inside A's callme method.");
    }
}

public class B extends A {
    @Override
    void callme() {
        System.out.println("Inside B's callme method.");
    }
}

public class C extends A {
    @Override
    void callme() {
        System.out.println("Inside C's callme method.");
    }
}

public class Dispatch {
    public static void main(String args[]) {
        A a = new A();
        B b = new B();
        C c = new C();
        A r;

        r = a;
        r.callme();

        r = b;
        r.callme();

        r = c;
        r.callme();
    }
}

result:
        Inside A's callme method. 
        Inside B's callme method.
        Inside C's callme method.

使用抽象类

  抽象方法

    

abstract type name(parameter-list);

  抽象类:包含一个或者多个抽象方法的类。

    注意点:

  • 不同通过new运算实例化抽象类
  • 不能声明抽象的构造方法
  • 不能声明抽象的静态方法

在继承中使用final关键字

  • 使用final关键字阻止重写
  • 使用final关键字阻止继承

Object类

Object是一个特殊的类,所有的其他类都是Object的子类。

Object类定义了以下方法

方法 用途
Object clone() 创建一个和将要赋值的对象完全相同的新对象
boolean equals(Object object) 判断一个对象是否和另一个对象相等
void finalize() 在回收不再使用的对象之前调用
Class<?> getClass() 在运行时获取对象所属的类
int hashCode() 返回与调用对象相关联的散列值
void notify() 恢复执行在调用对象上等待的某个线程
void notifyAll() 恢复执行在调用对象上等待的所有线程
String toString() 返回一个描述对象的字符串
void wait() 等待另一个线程的执行
void wait(long milliseconds)
void wait(long milliseconds, int nanoseconds)

其中getClass(), notify(), notifyAll()以及wait()方法都被声明为final。

原文地址:https://www.cnblogs.com/chris-jichen/p/9880200.html