1.多态变量
子类的对象可以被当做父类的对象来使用
子类的对象可以放在存放父类对象的容器里
java的对象变量是多态的,他们能保存不止一种类型的对象。他们可以保存的是声明类型的对象,或声明类型的子类的对象。当把子类的对象赋给父类的变量的时候,就发生了向上造型。
2.向上造型
子类的对象可以赋值给父类的变量(让两个对象的管理者去共同管理一个对象)。
但是父类的对象不能赋值给子类的变量。
3.多态
当通过对象变量调用函数的时候,调用哪个函数这件事叫做绑定
子类和父类中存在名称和参数完全相同的函数,这一对函数构成覆盖关系
通过父类的变量调用存在覆盖关系的函数时,会调用变量当时所管理的对象所属的类的函数
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。
4.Object类
Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
5.取消代码复制
代码复制是设计不良的一种表现。
6.封装
类和类之间的关系叫做耦合
耦合越低越好,保持距离是形成良好代码的关键
实现java封装的步骤:
(1)修改属性的可见性来限制对属性的访问,一般设为 private。
(2)为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public,用于属性的读写。
(3)在赋值和取值方法中,加入属性控制语句(对属性值的合法性进行判 断)。
下面以一个员工类的封装为例介绍封装过程。一个员工的主要属性有姓名、年龄、联系电话和家庭住址。假设员工类为 Employee,示例如下:
public class Employee {
private String name; // 姓名
private int age; // 年龄
private String phone; // 联系电话
private String address; // 家庭住址
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
// 对年龄进行限制
if (age < 18 || age > 40) {
System.out.println("年龄必须在18到40之间!");
this.age = 20; // 默认年龄
} else {
this.age = age;
}
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
7.接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
接口的声明格式语法如下:
[可见度] interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
8.抽象类
概述:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
在 Java 语言中使用 abstract class
来定义抽象类
抽象函数:表达概念而无法实现具体代码的函数
9.内部类
定义在别的类内部,函数内部的类
内部类能够直接访问外部的全部资源(包括任何的私有成员)
外部是函数时,只能访问那个函数里final的变量