- 记得从前面试,老是记不住这三个概念,容易混淆,这里特意记一下。
1.封装
所谓封装,就是将某些共同的东西提取出来成为一个抽象基类。例如:男人和女人都属于人类,他们共同的行为都有吃、喝、住、行,所以我们将这些共同行为封装在一个Human的基类,让它拥有吃、喝、住、行的方法。
public abstract class Human{
public abstract void eat();
public abstract void drink();
public abstract void live();
public abstract void walk();
}
2.继承
有了上面封装好的Human基类,我们就可以创建一个Male和Female类,来表示男人和女人,让Male和Female继承于Human类,这样Male类和Female类都拥有了Human的方法。Male和Female属于Human的子类,而在Java中,并不支持多继承,但可以重载多个接口(Interface)。
public class Male extends Human {
@Override
public void eat() {
}
@Override
public void drink() {
}
@Override
public void live() {
}
@Override
public void walk() {
}
}
public class Female extends Human {
@Override
public void eat() {
}
@Override
public void drink() {
}
@Override
public void live() {
}
@Override
public void walk() {
}
}
3.多态
从上面我们可以看到,继承了Human的Male和Female都分别要实现Human其中的四个方法。这是因为Human是抽象类(abstract关键字),并且其中的eat、drink、live、walk都是抽象方法,所以凡是继承它的子类都要实现这四个抽象方法。
而多态的意思就是:虽是同一个动作eat,但Male在实现的时候可以是站着吃饭,而Female在实现的时候可以是坐着吃饭,同一个方法可以有不同的实现,这就是面向对象中的多态。