实现继承:extends关键字
为类提供构造器
构造器用于初始化类的新对象:构造器不是方法,没有返回类型;构造器的声明中可以使用以下访问说明符:
– private
– protected
– public
– 无说明符
将信息传递给方法或构造器
参数类型;
参数名称;
按值传递:参数是原始类型,方法不能改变其值;参数是引用类型,方法不能改变其引用,但可以改变引用对象的值。
从方法返回值
在方法声明中声明方法的返回类型;eturn语句返回值的数据类型必须匹配方法声明的返回类型;方法可以返回原始类型,也可以返回引用类型。
使用this关键字
在实例方法或构造器中,this引用当前对象,也就是被调用的方法或构造器所属的对象;在构造器中,还可以使用this关键字调用相同类中的另一个构造器。
控制对类成员的访问
访问说明符决定其他类是否可以使用某个成员或调用某个方法。Java编程语言支持四种用于成员变量和方法的访问级别:private、protected、public和(如果没有指定)package。
访问级别
Private:类
无说明符:类、包
Protected:类、包、子类
Public:类、包、子类、所有类
实例和类成员的初始化
可以在声明的同时进行初始化,但是有一些限制:
– 必须以一个赋值语句表达初始化方式
– 初始化表达式不能调用任何被声明为抛出非运行时异常的方法
– 如果初始化表达式调用一个抛出运行时异常的方法,那么它不能进行错误恢复
使用静态初始化块初始化类成员;
实例成员的初始化。
覆盖和隐藏方法
覆盖(override)(实例方法):
– 子类中的 个实例方法与超类中的实例方法具有相同的标记和返回类型
– 方法的标记:名称,参数数量、参数类型
– 覆盖方法可以具有不同的throws子句
– 覆盖方法的访问说明符允许访问限制只能比被覆盖方法的多
– 子类不能覆盖超类中声明为final的方法
– 子类必须覆盖超类中声明为abstract的方法,否则子类本身必须是抽象的
覆盖和重载(overload);
覆盖和隐藏(类方法)。
隐藏成员变量
在类中,如果一个成员变量与超类中的成员变量同名(即使它们的类型不同),那么它隐藏超类成员变量;
在子类中,不能通过简单名称引用超类中的成员变量,而是必须通过super访问它;
代码可读性差,不建议隐藏成员变量。
使用super
使用super调用被覆盖的方法;使用super调用被隐藏的成员变量;使用super在构造器中调用超类的构造器。
使用Object的后代
每个类都是Object类的直接后代或间接后代;
Object类定义了所有类都必须有的基本状态和行为:
– clone
– equals和hashCode
– finalize
– toString
– getClass
– notify、notifyAll和wait
编写final类和方法
将类声明为final,即类不能被子类化:
– 通过防止系统被改版来提高系统的安全性
– 出于设计上的原因,某些类不需要子类
final方法:
– 在方法声明中使用final关键字表示这个方法不能被子类覆盖
编写抽象类和方法
抽象类:
– 表示一个抽象的概念,不应该被实例化
– abstract关键字
抽象方法:
– 没有实现的方法,允许子类提供这些方法的实现细节
– 如果抽象类只包含抽象方法,那么它应该被定义成接口
创建类的小结
类的定义有两个部分:
– 类声明
– 类体:成员变量、方法、构造器
访问说明符——控制对成员变量和方法的访问方式;
类变量、类方法,static方法关键字
实例成员、实例方法