一、封装
定义
封装就是将数据或函数等集合在一个个的单元中,通俗来讲就是将属性或方法定义在一个类中
意义
封装的意义在于保护或者防止代码被意外修改。
封装提供了一个有效的途径来保护数据不被意外的破坏。将数据的作用域在程序中定义为public改为private在很多方面会更好。私有的数据可以用两种方式来间接的控制。第一种方法,我们使用传统的存、取方法。第二种方法我们用属性(property)。
封装时的权限控制符区别如下:
作用域使用原则:尽量使用private
例
/** * 封装 */
public class Animal {
//私有化属性
private String name;
//私有化方法
private void eat(){
}
}
二、继承
继承主要实现重用代码,节省开发时间。继承通过extends关键字来实现
例
/** * 继承 */
public abstract class Animal {
public abstract void eat();
}
public class Dog extends Animal {
@Override
public void eat() {
}
}
三、多态
定义
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
多态的三个条件:
继承、重写、父类引用指向子类对象
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
多态的实现方式:重写、接口、抽象类和抽象方法
例
public class Person {
private void eat(){
System.out.println("人吃饭!");
}
}
public class Chinese extends Person{
// 重写父类方法
public void eat() {
System.out.println("中国人在吃饭!");
}
}
public class English extends Person{
// 重写父类方法
public void eat() {
System.out.println("英国人在吃饭!");
}
}
// 测试类
public class TestEat {
public static void main(String[] args) {
TestEat test = new TestEat();
// 引用指向中国人,创建中国人类对象
Person person1 = new Chinese();
// 此时调用的是Chinese的eat()方法
test.showEat(person1);
Person person2 = new English();
// 此时调用的是English的eat()方法
test.showEat(person2);
}
// 使用父类作为方法的形参,实现多态
public void showEat(Person person) {
// 传入的是哪具对象就调用哪个对象的eat()方法
person.eat();
}
}