Java面向对象
类的组成
- 类的组成就是三个部分:
成员变量
用于存储类所需的属性数据,比如一个人的年龄是这个类的一个属性。成员方法
用于实现类的各种功能(或行为),就相当于函数。构造方法
用于创建类的实例对象,将我们定义的类实例化,可以初始化一些值等操作。
成员变量
成员方法
构造方法
- 构造方法有以下特点:
- 当我们定义一个类时,并没有定义一个构造方法,
对象的相关操作
- 由于类是一个抽象的概念,而对象是类的一个实例化,所以我们操作都是操作的一个
实例化的类也就是对象
。 - 对象的相关操作总的来说就是两种:
- 访问实例对象的成员变量
- 调用实例对象的成员方法
操作成员变量
操作成员方法
实例对象的销毁
类的三大特性
继承性
- 继承性就是子类可以继承父类的成员变量和成员方法,同时可以增添自己特有的成员变量和成员方法。
- 一个类可以是其他类的父类,也可以是其它类的子类。即可以继承别人的成员变量和成员方法,也可以让别人继承自身的成员变量和成员方法
- 带有
private
关键字的成员变量和成员方法是不会继承给子类 - 可以使用
extends
和implement
这两个关键字建立类与类的继承关系。 - 继承关系还具有传递性
- Java不支持多重继承,仅支持单继承,即每个类只能有一个直接父类,
extends
关键字后面只能出现一个父类。 - 子类与其直接父类之间在构造方法存在约束关系,当前所定义的类的构造方法必须调用其直接父类,需要使用
supper(调用参数列表)
-
如果在当前定义的类中没有显式地写上调用父类构造方法的语句时,Java虚拟机会自动生成
-
子类和父类之间是可以进行类型转换的,转换规则如下:
- 隐式类型转换:将类型为子类型的数据转换无味类型为其父类型的数据。
- 显式(强制)类型转换:将类型为父类型的数据转换为类型为子类型的数据。
- 如果两个类型不存在子类型与父类型关系,则一般不能进行类型转换
-
子-父类的实例对象之间的关系:子类的实例对象一定是父类的实例对象,而父类的实例对象不一定是子类的实例对象。可以使用
instanceof
关键字进行判断。 -
隐式类型转换:
class J_Employee{}
public class J_Teacher extends J_Employee
{
publis static void main(String args[])
{
J_Teacher tom = new J_Teacher();
J_Employee a = tom;
}
}
- 显式类型转换
class J_Employee{}
public class J_Teacher extends J_Employee
{
publis static void main(String args[])
{
J_Teacher tom = new J_Teacher();
J_Employee a = tom;
J_Teacher b = (J_Teacher)a;
}
}
多态性
- 类的多态性是指在类定义中出现多个构造方法或出现多个同名的成员方法。
- 对于同名的成员方法,多态性还包括在当前定义的类(子类)中出现与其父类的成员方法同名的成员方法。