详述:Java多态

详述:Java多态

用eclipse举例,先创建一个Java project ,再创建以下三个类:
第一个类

/**
哺乳动物类
*/
public class Mammal(){
	public void move(){
		System.out.println("可以移动。。。。");
	}
}

第二个类

//鲸鱼类
public class whale(){
	public void Whale extends Mammal(){
		System.out.println("靠鳍运动");
	}
}

第三个类

public class Ocean(){
	`public static void main(String[] args) {
  	Whale whale = new Whale(); //子类类型的变量执行子类创建的对象
  	whale.move(); 
  	System.out.println(whale);  //地址相同
  
  	System.out.println("````````````");
  	Mammal mammal = whale; //父类类型的变量指向子类创建的对象
  	mammal.move();
  	System.out.println(mammal);  //地址相同
  }
  //多态:代码执行前是执行父类的方法,代码执行时是执行子类的方法
 
 //编译时类型与运行类型不一致,不一定出现多态,但一致一定不会出现多态

上述中第三个类中whale.move();和mammal.move(); 执行结果相同,因为whale中储存的是地址,而在后面,将whale的地址赋值给了mammal,mammal也指向了whale所指的对象地址,所以输出结果相同。

Java引用变量有两种类型,分别是编译时类型运行时类型,编译时类型由声明该变量时使用的类型决定;运行时类型由实际赋给变量的对象,如果编译时类型和运行时类型不一致,就可能出现多态。就如同上述代码中所看到的,编译时,mammal.move();指向父类的Mammal中的方法,而运行时指向了子类的whale.move();方法,所以就形成了多种形态,成为多态。

发布了11 篇原创文章 · 获赞 14 · 访问量 292

猜你喜欢

转载自blog.csdn.net/ArcsinTao/article/details/103326192