多态的定义:
多态性就是多种表现形式,具体来说,可以用"一个对外接口,多个内在实现方法"表示。指一个对象不仅仅可以已本身的类型存在,也可以作为其父类类型存在。
多态的语法:
(1)自动类型转换:这是小转大自动转
父类 父对象 = new 子类构造方法
(2)强制类型转换:这是大转小
父类 父对象 = new 子类构造方法
子类 子对象 = (子类类型)父对象
记住赋值号左边同名方法被赋值号右边同名方法覆盖。
多态的深入理解:
我们都能知道抽象类不能实例化但是可以含有多个实现的方法,既然不能实例化,那么含有这些方法又有什么意义呢?
记住一个对象实例化需要几个条件,但是最重要的是必需要在堆区开辟一块内存空间,而且所有方法必须实现。而抽象类不能实例化,那么也就是不能new出一块空间来,所以多态性的出现也能够解决这个问题。假设父类是抽象类,既然父类不能new,那么何不子类能new,借给父类用呢,多态性出现就能解决为抽象类提供了一块内存空间,但是还是不能实例化,因为还有抽象方法,所以多态性又有一个原则,赋值号左边同名方法覆盖右边的同名方法。这样就能很好的解决抽象类也能调用方法的问题了。
多态实例:
public class Text {
public static void main(String[]arys){
//p 1、new出空间 2、没有抽象方法
Person p ;
//自动类型转换:
p = new Man();
p.eat();
p.talk();
//强制类型转换
Person p1 =new Man();
p1.talk();
Man a=(Man)p1;
a.talk();
}
}
//父类
abstract class Person {
String name;
public void eat(){};
public void talk(){
System.out.println("父类talk方法");
}
}
//子类
class Man extends Person{
int age;
public void eat(){
System.out.println("子类的eat方法");
}
public void talk(){
System.out.println("子类的talk方法");
}
}
欢迎大家收看我的在线Java全套免费教学超清视频:
http://v.youku.com/v_show/id_XODQ1NjU0NDc2.html 这是其中的一个视频连接,大家可以拖动到优酷视频下方,订阅我的账号,因为以后我会有更多视频免费提供
百度搜索:输入Fcs_D调的码农 ,或者输入"胡博君"就能看到我的很多视频
或者加我的微信号:fcsboy 我可以及时通过微信通知你们
QQ学习群:237053693