JAVA学习心得——多态

首先复习一下重写

Mammal.java(父类):
public class Mammal{
	public void move(){
			System.out.println("正在游动.....")
}
}//父类中定义的move方法。
 Whale.jvav(子类):	
    public class Whale extends Mammal{
    	@override
    		public void move(){
    		  System.out.println("用尾巴游动......")
    		}//子类中重写move方法。
    }
	

Earth.jvav
	public class Earth{
		public static void main(String[ ]args{
			Whale whale = new Whale();
			whale.move;//此时输出结果是用尾巴游动......(使用重写后的move方法)。
		}
	}

进入正题:
首先int a = 9;可以替换为double a = 9;//自动类型转换,因为double比int更大;与之相似:由于Whale是Mammal的子类,所以可以将Whale whale = new Whale();替换为 Mammal mammal = new Whale(); 在这里插入图片描述
此时上图所述Earth.java虽然调用是父类Mammal的move方法,但是运行结果是:用尾巴游动…。
注意事项:
Mammal mammal = new Whale();是对象上转型,new Whale():是上转型对象。
⚫有两个状态①:表面上是调用父类的方法
②:实际上由于Mammal中存在子类创建的对象,所以在执行时执行的子类的move方法。
//如果编译时类型和运行时类型相同,则一定不会出现多态;√
//如果编译时类型与运行时类型不相同,则一定出现多态;x

public void breath() {
	System.out.println("用鼻子呼吸......");
}
	mammal.breath();//此时无法调用子类中的方法、属性。所以会报错。

如果必须使用子类中新增的属性和方法,可以通过以下方法:
int price = (int)9.0;类似。通过Whale whale = (Whale)mammal;实现对象下转型。
这样就可以调用子类新增的方法和新增的属性。
注意事项:
⚪下转型的前提是先出现上转型对象。

 Mammal mammal = new Mammal();
    Whale whale = (Whale)mammal;

此类情况就不能有对象下转型,因为没有上转型对象。

⚪ 在多态的前提下,父类中被子类重写的方法没有必要有方法体。
父类可以写做:

public abstract class (){
	public void abstrsct move(){
	}
}

⚪趁热打铁了解接口:如果一个class中,都是被重写的方法,那么这个class可以是一个接口。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值