------- <a href="
http://www.itheima.com" target="blank">android培训</a>、<a href="
http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
多态:事物的多种体现形态。
1,多态的体现:匪类的引用指向了自己的子类对象,父类的引用也可以接受自己的子类对象。
2,多态的前提: 必须类与类有关系,继承或者实现。
3,多态的好处:提高了扩展性,但是只能用父类的引用访问父类中的成员
多态在非静态成员函数特点:
在编译时期,参阅引用变量所属类是否有调用方法,如果有,编译通过,没有,编译失败。
在运行时期, 参阅对象所属的类中是否有调用方法。
简单就是说:函数在多态调用时,编译看左边,运行看右边。
在多态中,静态成员,静态函数:无论编译和运行,都参考左边(引用型变量所属的类)。
在编译时期,参阅引用变量所属类是否有调用方法,如果有,编译通过,没有,编译失败。
在运行时期, 参阅对象所属的类中是否有调用方法。
简单就是说:函数在多态调用时,编译看左边,运行看右边。
在多态中,静态成员,静态函数:无论编译和运行,都参考左边(引用型变量所属的类)。
abstract class Student{
public abstract void study();
public void sleep(){
System.out.println("天天睡觉");
}
}
public abstract void study();
public void sleep(){
System.out.println("天天睡觉");
}
}
class DoStudent{
public void do(Student s){
s.study();
s.sleep();
}
}
public void do(Student s){
s.study();
s.sleep();
}
}
class BaseStudent extends Student{
public void study(){
System.out.println("bese study");
}
}
class AdvStudent extends Student{
public void study(){
System.out.println("adv study");
}
public void sleep(){
System.out.println("夜夜睡觉");
}
}
public void study(){
System.out.println("adv study");
}
public void sleep(){
System.out.println("夜夜睡觉");
}
}
public class Test{
public static void main(String args []){
DoStudent ds = new DoStudent();
ds.do(new BaseStudent());
ds.do(new AdvStudent());
}
}
public static void main(String args []){
DoStudent ds = new DoStudent();
ds.do(new BaseStudent());
ds.do(new AdvStudent());
}
}
![](http://cnc.qzs.qq.com/ac/b.gif)