一、封装
1. 概念:就是使类中的成员变量都是private,但是又提供public方法访问这些成员变量。这样就实现了隐藏类中的成员变量,从而确保了数据的安全性;
2. 实例:
private String name;
public String getName() { 用于读取变量数据
return name;
}
public void setName(String name) { 用于设置变量数据
this.name = name;
}
注意:命名这些方法时,使用 get 和 set 加上变量名(变量名首字母要大写);
二、多态
1. 分类:
① 静态多态:实现的方式是方法的重载;
② 动态多态:实现方式是重写父类的方法;
注意:我们说的多态,一般就指的是动态多态。
2. 引用数据的转型(语法与基本数据转型一样):
① 向上转型:从子类向父类转,可自动实现;
② 向下转型:从父类向子类转,需强制转换;
3. instantof 关键字:
用于判断 instantof 前面的对象是否是 instantof 后面的对象的实例。(是返回 true ,不是返回 false)
三、抽象
1. 关键字:abstract
2. 抽象类:
abstract 声明的抽象类,不能被实例化。所以需要要有子类才能体现其作用。
3. 抽象方法:
abstract 声明的抽象放法,没有方法主体,只能出现抽象类中,并且在子类中要被实现才可以(抽象子类可以不用实现)。
四、接口
1.概念:就是一种更为特殊的抽象。在接口中的所有方法都是抽象方法,所有的方法都不提供具体的实现。需要其他的类来实现其中所有定义的方法。
2.接口与类异同:
同:
① 可以有任意数量的方法;
② 保存为以".java "为后缀名的文件,接口名必须与文件名保持一致;
③ 编译后的文件是后缀名为“.class”的文件;
④ 在包中的接口,其相应的字节码文件必须放置在和包名相匹配的一个目录中;
异:
① 接口不能被实例化;
② 接口不包含任何构造器;
③ 接口中的所有方法都是抽象的;
④ 接口中不能包含实例化的成员变量。唯一可以出现在接口中的成员变量必须是同时声明为static和final(公有静态常量);
⑤ 接口不能被一个类继承,只能被一个类实现;
⑥ 一个接口能够继承多个接口;
3. 接口的声明:
语法:
public interface 接口名 {
// 任意数量的final,static成员变量
// 任意数量的抽象方法声明
}
性质:
① 接口默认就是抽象的。所以在声明时,不需要使用关键字 abstract;
② 接口中的每一个方法都是抽象的。所以在声明时,也不需要使用关键字 abstract;
③ 接口中的方法一般都是使用 public ,所以 public 也可以省略;
4. 接口的实现:
关键字:implements;
语法:
public class 类名 [extends 父类名] implements 接口名 {}
注意:可以一次实现多个接口,有多个接口名时由逗号隔开,实现接口的类(抽象类除外)必须实现接口中的所有方法;