------- android培训、java培训、期待与您交流! ----------
1、多态:
可以理解为事物不同的表现形态。
表现形态:父类引用指向自己的子类对象。
也可以理解为父类接受自己的子类对象
class DemoA
{
void show()
{
//方法体中的内容
}
void show()1
{
//父类中没有被覆写的方法
}
}
class DemoB extends DemoA
{
void show()
{
//方法体中的内容。
}
public static void main(String args[])
{
DemoA a = new DemoB();//父类的引用指向自己的子类对象
a.show(); //调用父类中被子类覆写的方法
a.show1();//调用父类中没有被子类覆写的方法
}
}
2、多态的前提:
必须是类与类之间有关系,要么继承,要么实现。通常还存在一个前提就是覆盖。
3.利与弊:
好处:大大的提高了扩展性。
弊处:提高了扩展性,但是只能用父类的引用访问父类的成员,也就是说,只能是继承了父类才能
访问并覆写父类中的方法。
4、前期调用功能,后期定义子类实现功能,并把子类作为参数传递进来
5、向上转型和向下转型:
类型的提升:向上转型,转成父类
向下转型:也就是说如果想用子类中特有的功能必须进行强制的转换,把父类的引用强制转换成
子类的类型:
代码如下:
class Animal{
void eat()
{
// 定义一个吃的方法
}
}
class Mao extends Animal{
void eat(){
System.out.println("猫吃鱼"); // 继承了父类中的方法并覆写了方法
}
void catchMouse(){
System.out.println("猫抓老鼠");//子类的特有方法
}
}
class Demo{
public static void main(String args[]){
Animal a = new Mao();//父类的引用指向了自己的子类对象
a.eat(); //调用子类中被覆写的方法
Mao m = (Mao)a;// 是把父类的引用强制的转换成了子类类型
m.catchMouse();// 输出了子类中特有的方法
}
}
6、多态的应用:
在多态中函数成员的特点:函数成员的特点是非静态的。
(1)、编译时参阅引用类型所属的类中是否调用有方法(也就是说父类中是否有方法被子类所重写)
(2)、运行时参阅对象所属的类中是否有调用方法。
也就是说编译时看左边,运行时看右边。
7、在多态中成员变量的特点:
无论编译和运行时都参考左边(引用类型所属的类)
8、注意一个异常:”classcastException“:是类型转换异常