zoukankan      html  css  js  c++  java
  • 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并发
    实现Runnable接口和继承Thread类之间的区别
    如何使用wait(), notify() and notifyAll() – Java
    HashMap如何工作
    使用hashCode()和equals()方法
    Compare and Swap [CAS] 算法
    对象级别锁 vs 类级别锁 – Java
    solr的访问权限管理及ubuntu下iptables的设置
    mysql 字符串字段中查找非ascii字符
    tensorflow学习——调试ctc的两个bug
  • 原文地址:https://www.cnblogs.com/chris-jichen/p/9880200.html
Copyright © 2011-2022 走看看