封装
封装是将类的信息封装在内部,不给外部直接访问,通过对外提供方法来方位类里面的数据。
修饰符:private, protected 以及public. 如果不写明,则默认是protected.
封装的实现:
(1)修改类内部属性的访问控制符:private
(2)提供内部属性的getter以及setter方法来用于类内部属性的读取以及写入
(3)在getter和setter方法中加入属性控制语句,用于判断属性写入的合法性。
(4)单例模式就是对封装最好的一个例子。
public class User {
private String userId;
private String userName;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
继承
继承是一种类似数学里的属于关系,比如:狗属于动物,桃花属于植物,被继承的类叫做父类(也叫基类),而自己称之为子类(派生类),子类拥有父类的属性,比如狗拥有了动物名字的属性,拥有吃饭的功能等。
//动物类,是基类
public class Animal {
//这是动物的属性
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//这是动物的功能
public void eat(){
Log.e("Animal", "动物要吃饭的哦");
}
}
//这是狗类继承了动物类,所以狗类拥有了动物的name的属性,默认拥有了Animal的eat()功能,但是狗类也可以重写(覆盖)父类的方法,因为狗吃东西的属性给其它动物不一定完全相同,有自己的吃饭特点。
public class Dog extends Animal{
//这是重写了Animal中的方法
@Override
public void eat() {
super.eat(); //这是依然调用了父类的eat方法
Log.e("Dog", "狗吃的是骨头");
}
}
多态
多态:是指对象拥有多种形态。主要表现为引用多态和方法多态。而继承是多态实现的基础。
- 引用多态
(1)父类的引用可以指向本类的对象
(2)父类的引用可以指向子类的对象
拿上面的狗类和动物类做例子;
//测试类
public class Test{
public static void main(String[] args) {
//父类的引用可以指向本类的对象
Animal ani1 = new Animal();
//父类的引用可以指向子类的对象
Animal ani2 = new Dog();
}
}
- 方法多态
(1) 创建父类对象时,调用的方法为父类方法;
(2) 创建子类对象时,如果子类重写了父类的方法,则调用的是子类的方法;如果子类没有重写父类的方法,则调用的是父类的方法(继承父类的方法);
还是以上面的狗类和动物类为例
//测试类
public class Test{
public static void main(String[] args) {
//父类的引用可以指向本类的对象
Animal ani1 = new Animal();
//父类的引用可以指向子类的对象
Animal ani2 = new Dog();
//动物要吃饭的哦
ani1.eat();
//输出狗吃的是骨头
ani2.eat();
}
}