多态:表示多种形态

一个类 父类(父接口)的引用执行多个子类对象。

实现多态必须满足以下条件:
1.有继承关系。
 2.有子类重写父类方法。
 3.父类的引用指向多个子类对象。

转型

父类 对象名 = new 子类();
//调用的是父类或子类重写父类的方法
子类 对象名 = new (子类)父类对象名; 
//调用的是子类特有的方法

/**
 * 
 * @author ljf
 *多态  表示多种形态
 *  一个类父类(接口)的引用执行多个子类对象
 * 实现多态必须满足以下条件:
 * 1.有继承关系
 * 2.有子类重写父类方法
 * 3.父类的引用指向多个子类对象
 */
public class Student {
//先抽出学生的共性 名字  年龄 身高  性别 
	private String name;
    private int age;
    private double higth;
    private char sex;
    public String getname(){
    	return name;
    }
    public void setname(String name){
    	this.name=name;
    }
    public int getage(){
    	return age;
    }
    public void setage(int age){
    	this.age=age;
    }
    public double gethigth(){
    	return higth;
    }
    public void sethigth(double higth){
    	this.higth=higth;
    }
    public char getsex(){
    	return sex;
    }
    public void setsex(char sex){
    	this.sex=sex;
    }
    //还有一些必要的行为
    //吃
    public void eat(){
    	System.out.println("吃");
    }
    //睡
    public void sleep(){
    	System.out.println("睡");
    }
    //玩
    public void play(){
    	System.out.println("玩");
    }
    public void xinxi(){
    	System.out.println("姓名:"+this.name+"年龄:"+this.age
    			+"身高:"+this.higth+"性别:"+this.sex);
    }
}
/**
 * 
 * @author ljf
 *继承Student类 重写玩的方法
 *还具有特有的方法:飞
 */
public class Student_1 extends Student {
	public void play(){
    	System.out.println("踢足球");
    }
	public void fly(){
		System.out.println("飞");
		}
}
/**
 * 
 * @author ljf
 *继承Student类 重写吃的方法
 *还具有特有的方法:喷火
 */
public class Student_2 extends Student {
	public void eat(){
		System.out.println("吃肉");
	}
 public void fire(){
	 System.out.println("喷火");
 }
}

/**
 * 
 * @author ljf
 *多态,表示多种形态
 *一个类的引用指向多个子类对象
 */
public class Run {

	public static void main(String[] args){
		/*
		 * new对象时需要
		 * 向上向下转型
		 * 向上转型:自动转型
		 * 向下转型:强制转型
		 */
	/*
		int a = 10;
		long b = a;
		 a = (int)b;
		 */
		
		//父类 父类对象名 = new 子类();
		Student s = new Student_1();
		//调用父类方法和子类重写父类方法
		s.setname("赵");
		s.setsex('男');
		s.setage(18);
		s.sethigth(1.68);
		s.xinxi();
		s.eat();
		s.sleep();
		s.play();//调用的是Stu1的play方法
		//调用子类特有方法需要向下转型
		//子类   子类对象名 = (子类) 父类对象名; 
		Student_1 s1 = (Student_1) s;
		s1.fly();
		System.out.println("---------------------------");
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值