《Java 2实用教程》第5章总结

第五章 子类与继承

5.1 子类与父类的关系

5.1.1 子类的定义

子类,亦称为派生类,是从父类(或称为超类、基类)中继承属性和方法的一种类。通过继承机制,子类能够复用父类的代码,这不仅显著提升了代码的复用性,还极大地增强了代码的可维护性。

5.1.2 类的继承体系

在Java编程语言中,类的继承关系通常被描绘为一种树状结构,其中Object类作为树的根基,所有的类都直接或间接地继承自Object类。

5.2 子类的继承特性

5.2.1 同包中的继承

若子类与父类位于同一个包内,子类将能够继承父类的所有非私有成员,这包括属性和方法。

5.2.2 不同包中的继承

当子类与父类不在同一个包时,子类仅能继承父类的protected和public成员,而无法访问默认(包级私有)和private成员。

5.2.3 UML图表示继承关系

在UML(统一建模语言)的图形表示中,继承关系通常通过一个空心箭头来展示,箭头指向父类,以此形象地描绘出类之间的继承联系。

5.2.4 protected修饰符的说明

protected修饰符允许子类访问父类的成员,即使这些类位于不同的包中。这是protected修饰符与默认访问修饰符(包级私有)之间的主要区别。

5.3 子类与对象的关系

5.3.1 子类对象的特性

子类对象不仅能够访问自身类中定义的成员,还能访问从父类继承而来的成员。在实例化子类对象时,Java编译器会确保首先调用父类的构造方法,以完成父类部分的初始化。

5.3.2 instanceof运算符的使用

instanceof运算符是Java中用于检测一个对象是否属于某个特定类或其子类的实例的运算符。其语法格式为:对象 instanceof 类,返回的结果是一个布尔值。

5.4 成员变量的隐藏与方法的重写

5.4.1 成员变量的隐藏

如果子类中定义了与父类同名的成员变量,那么父类中的同名变量将被隐藏。在这种情况下,子类中的变量将覆盖父类中的变量。要访问被隐藏的父类成员变量,可以使用super关键字。

5.4.2 方法的重写

子类可以重写父类中的方法,以提供更符合子类特性的实现。重写的方法必须与父类方法具有相同的名称、返回类型和参数列表。

5.5 super关键字的作用

5.5.1 访问被隐藏的成员

super关键字在Java中用于引用父类的成员,特别是在成员被隐藏或方法被重写的情况下。通过使用super.variable或super.method(),可以访问被隐藏的父类成员或调用被重写的方法。

5.5.2 调用父类的构造方法

在子类的构造方法中,可以通过super关键字调用父类的构造方法。这一调用必须是子类构造方法中的第一条语句,以确保父类部分得到正确的初始化。

5.6 final关键字的应用

5.6.1 final类

被标记为final的类无法被其他类继承。这通常用于保护那些不希望被修改的类。

5.6.2 final方法

被声明为final的方法无法被子类重写。这通常用于保护那些不希望被改变的方法的行为。

5.6.3 常量

使用final修饰的变量被称为常量。一旦常量被赋值后,其值就不能再被更改。这通常用于定义那些在整个程序中都不会改变的值。

5.7 对象的上转型

上转型对象是指将子类对象的引用赋值给父类类型的变量。在这种情况下,该对象只能访问父类中定义的成员,而无法直接访问子类特有的成员。

5.8 继承与多态性

多态性是面向对象编程中的一个重要概念,它允许同一个方法在不同的类中以不同的方式实现。在Java中,多态性主要通过方法重写和接口实现来实现。

5.9 抽象类与抽象方法

抽象类是一种无法被实例化的类,它只能被其他类继承。抽象方法是没有具体实现的方法,它必须在非抽象子类中被重写。抽象类和抽象方法通常用于定义一组相关的类和方法,但不提供具体的实现细节。

示例:

public abstract class Animal {  
    // 抽象方法,没有具体实现  
    public abstract void sound();  
}  
  
public class Dog extends Animal {  
    // 重写父类的抽象方法  
    @Override  
    public void sound() {  
        System.out.println("Woof");  
    }  
}

在这个示例中,Animal是一个抽象类,它定义了一个抽象方法sound()Dog类继承自Animal类,并重写了sound()方法,提供了具体的实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值