2021-09-20

9.3 继承

注意:在Java中不支持类之间的多重继承(注:Java支持接口之间的多重继承),即不允许一个子类继承多个父类

继承的实现通过在类的声明中加入extends语句来创建一个类的子类:

class SubClass extends SuperClass
{...}

9.4 方法重写

方法重写也称为方法覆盖,指在子类中重新定义父类已有的方法

方法重写的条件:

  • 方法名、参数列表和返回值完全相同
  • 访问控制范围(public、protected、private、default)不能被缩小
  • 抛出的异常不能被扩大

9.5 this()和super()的使用

9.5.1 this()
  • this()方法代表的是一个构造方法对其他构造方法的调用
  • this()必须放在构造方法的第一行
9.5.2 super()

super()有两种通用形式

  • 第一种是调用超类的构造方法
  • 当一个子类调用super()时,它调用它的直接超类的构造方法
  • 第二种是用来访问被子类的成员隐藏的超类成员
  • super()可用来引用父类中的方法、变量及构造方法

9.6 finalize()方法的使用

在对对象进行垃圾收集前,Java运行时系统会自动调用对象的finalize方法()来释放系统资源

该方法必须按以下方式声明:

protected void finalize() throws throwable
{...}

finalize()方法是在java.lang.Object中实现的,在用户自定义的类中,它可以被覆盖,但一般在最后要调用父类的finalize()方法来清除对象所使用的所有资源

protected void finalize() throws throwable
{
    ...  //释放本类中使用的资源
    super.finalize();
}

注意:
在Java中对象执行完毕并不显示撤销对象,而是在没有任何引用的时候,将对象标识为不再使用
因此,程序员无法确切知道何时何地调用finalize(),甚至执行垃圾回收时,也不保证立即执行finalize()方法

9.7 多态

多态实现有以下三个条件

  1. 继承和方法重写
  2. 子类对象声明超类类型
  3. 运行时类型识别

多态的代码实现

package sample;

class Super {
    public void method() {
        System.out.println("Super调用");
    }

}
class Sub1 extends Super {
    public void method() {
        System.out.println("Sub1调用");
    }
}
class Sub2 extends Super {
    public void method() {
        System.out.println("Sub2调用");
    }
}
class Sub3 extends Super {
    public void method() {
        System.out.println("Sub3调用");
    }
}


public class DuoTai {
    public static void main(String[] args) {
        Super arr[] = {
                new Sub1(), new Sub2(), new Sub3()
        };
        for (Super ele : arr)
            ele.method();

    }
}

运行结果

Sub1调用
Sub2调用
Sub3调用

10. 面向对象高级特性

10.1 静态变量(类变量)、方法和初始化块

静态变量:用static修饰的成员变量即为静态变量,静态变量是一种全局变量,它属于某个类,不属于某个对象实例,在各对象实例之间共享。如果想访问静态变量可直接通过类名来访问,可以不通过实例化访问它们

静态方法:用static修饰的成员方法即为静态方法,调用静态方法可以通过类名来调用,即不用实例化对象

  • 实例变量或者类变量在定义初始化时,都不能超前引用

  • 实例方法既可以使用实例变量,又可以使用静态变量;而静态方法只能使用静态变量,不能直接使用实例变量(比如先创建一个类的实例,再用该实例调用实例变量)

    例如:System.out.println(new test().str);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值