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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值