封装:是将多个事物的共同体进行封装,提供公共的访问方式,当需要的时候可以直接调用
继承:主要是继承抽象类,接口,抽象类的继承是获得父类方法,将多个事物的公共方法以及行为进行封装,子类重写所有的方法。但是事物有独特的行为,我们可以使用接口进行方法封装,继承抽象类的同时在实现接口。但是既然能使用接口进行方法封装,我们绝大多数情况
是使用接口进行多个事物的公共方法的封装,对特定行为也是用接口,因为特定行为对其他使用接口的事物是不需要的。这样的对多个接口的实现规避了多继承的缺陷;可以使用方法多实现,不能多继承。
多态;
下面栗子主要是基于了解多态的向上转型,向下转型的特点,以及转型时,成员变量局部变量的变化。
传参案例是最通俗最直白的方式了解多态的实际应用形式以及思考它的思想!思想!思想!思想!思想!思想!思想!思想!思想!思想!
多态的表现:可以先记住使用多态传参这件事
多态的实现必须要有继承关系
interface 动物(){
....eat();
}
class 狗 implements 动物(){
....eat(){
syso(狗吃骨头)}
}
class 猫 implements 动物(){
....eat(){
syso(猫吃鱼)}
}
public ..........test(){ 来测试一下
....main(){ 主方法
狗 animal = new 狗();
eat(狗);
}
eat方法需要传递动物参数,然而现在传递的是狗这个类,这里的传递应用了多态的向上转型,可以写成//动物 animal =new 狗();//那么下面eat()方法的形参也就变成eat(狗 dog)这种,但是,我下次传递一个猫,老鼠,猪呢?不就要重新写一个catEat方法pigEat方法.houseEat方法么? 然而使用这种向上转型的方式就只需要一种。简单的一句话概括,所有子类在这里都可以看成其父类的对象(只是传参例子的比喻,并不是实事)。就比如int 我可以使用1234567传参,动物对象,我可以使用狗,鼠,猫进行传参。
public ......eat(动物 animal){ eat方法需要传递动物参数
animal.eat()
因为向上转型的特点,此时看起来是父类的eat方法,其实是子类dog的eat方法
}
}
花了3个小时终于能稍稍触摸到多态的大门。
可能我说的都很low,很土,请不要骂的太狠,谢谢