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。

  • 相关阅读:
    小团队Git协作管理
    android用MediaCodeC将opengl绘制内容录制为一个mp4
    非对称加密算法RSA 学习
    .obj 和 .mtl格式详解
    “m3u8格式简析”与“视频秒开优化”
    Jenkins Android打包(Mac平台)
    java引用Arcface,实现人脸识别(demo)
    ArcFace Demo [Android]
    C# ArcFace 免费人脸识别 2.0 demo
    [Windows][C#][.NET][WPF]基于ArcFace2.0+红外双目摄像头的活体检测
  • 原文地址:https://www.cnblogs.com/chris-jichen/p/9880200.html
Copyright © 2011-2022 走看看