多态,态的向上向下转型、及多态的实例

多态的概念

概念 :一个对象拥有多种形态,这就是:对象的多态性,
代码当中体现多态性:
其实就是一句话:父类引用指向子类对象。
格式:
父类名称 对象名 = new 子类名称();
或者:
接口名称 对象名 = new 实现类名称();

//格式:
Usb usb = new  Mouse();//多态

多态的前提

必须是类与类之间的关系,要么是继承(extends),要么是实现(implements),通常还有一个前提,就是存在覆盖(重写)。

类型转换(向上转型,向下转型)

//多态的向上转型,其实就是多态写法:
//向上转型是安全的。从小范围转向了大范围。
//向上转型只能调用父类与子类中共有的方法
// 格式:	父类名称  对象名   = new 子类名称();
//含义:右边创建一个子类对象,把它当作父类来看待
//多态的向下转型,其实就是一个还原动作
Usb usb = new  Mouse();//多态,向上转型。
Mouse mouse = (Mouse)usb;///多态中向下转系

多态的代码中,成员方法的访问规则是:

看new 的是谁,就优先用谁,没有则向上找
多态中成员方法:
口诀:编译看左,运行看右
多态中成员变量
口诀: 编译看左,运行看左

多态的实例:

package cn.yunhe.weekend;

public class Work {
	public static void main(String[] args) {
		//父类引用指向子类对象
		Animal animal = new Cat();//多态,也是向上转型
//		System.out.println(animal.age);	//这里调用的是父类中的成员变量
		animal.eat();//编译看左,运行看右,当右边没有eat方法时,自动调用父类中的eat方法。
//		animal.climb();//这里不能调用climb方法,只能调用父类和子类中共有的方法,只能通过向下转型调用子类中特有的方法
		Cat  cat = (Cat)animal;//多态的向下转型
		cat.climb();//向下转型可以调用子类中特有的方法
	}
}
//创建一个动物类
 class Animal{
	 int age = 10;
	//创建一个吃的方法
	public  void eat() {
		System.out.println("会吃的动物");
	}
	public void sleep() {
		System.out.println("会睡的动物");
	}
}
 //创建一个动物的子类,猫
 class Cat extends Animal{
	 
	 int  age = 2 ; 
	 //子类特有的方法
	 public void climb() {
		 System.out.println("会爬树的猫");
	 }
	 //方法重写
	 @Override
	 public  void eat() {
		 System.out.println("会吃猫粮的蓝猫");
	 }
	 //方法重写
	 @Override
	 public void sleep() {
		 System.out.println("喜欢睡觉的猫");
	}
 } 
 class Dog extends Animal{//动物的一个子类 狗
	 //方法重写
	 @Override
	 public  void eat() {
		 System.out.println("会吃骨头的柯基");
	 }
	 //方法重写
	 @Override
	 public void sleep() {
		 System.out.println("喜欢睡觉的柯基");
	}
 }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值