Java基础-继承
Posted 上升的泡泡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
以上是关于Java基础-继承的主要内容,如果未能解决你的问题,请参考以下文章