黑马程序员--多态(1)

---------------------- android培训java培训、期待与您交流! 




以前对于多态的理解就是:有一个子类继承了父类,然后在使用的时候 父类明 f=new 子类名();但是具体是怎么用,好像一直都没仔细研究过,也没怎么应用过。

 今天看了毕老师的视频,有了比较深的理解。

如,看之前自己写的代码


package com.aa;

import java.util.ArrayList;
class Person1{
	private String name;
	private int age;
	public Person1(){}
	public Person1(String name){
		this.name=name;
	}
	public Person1(String name,int age){
		this(name);
		this.age=age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	
}
class Man extends Person1{
	public void work(){
		System.out.println("努力工作....");
	}
}
class Woman extends Person1{
	public void cooking(){
		System.out.println("上得厅堂,下得厨房");
	}
}

public class Test3 {
	
	   public static void main(String[] args) {
		   Person1 p1=new Man();
		   ((Man) p1).work();
        
   }
   


	

}

其实这样的代码一点用都没有,使用多态的作用是为了提高程序的扩展性,正如毕老师举例一样,一个一年前写的代码,以后需要修改,只需要改很小的一部分,而自己写的,完全没有意义。

 实现方法,父类中要有一个描述子类共有特性的方法,然后在描述子类时再重写此方法。


 改后的代码:


package com.aa;


import java.util.ArrayList;
class Person1{
	private String name;
	private int age;
	public Person1(){}
	public Person1(String name){
		this.name=name;
	}
	public Person1(String name,int age){
		this(name);
		this.age=age;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	public void work(){
		
	}
	
}
class Man extends Person1{
	public void work(){
		System.out.println("努力赚钱....");
	}
	public void drink(){
		System.out.println("跟朋友出去喝酒....");
	}
}
class Woman extends Person1{
	public void work(){
		System.out.println("在家做饭。。。");
	}
	public void huazhuang(){
		System.out.println("研究化妆。。。。");
	}
}


public class Test3 {
	
	   public static void main(String[] args) {
		   Person1 p1=new Man();
		   p1.work();
		   Man pp=(Man)p1;
		   pp.drink();
		   Person1 p2=new Woman();
		   p2.work();
		   Woman ppp=(Woman)p2;
		   ppp.huazhuang();
        
   }
   




	


}


在需要使用子类中的方法的时候,把对象向下转型

Man pp=(Man)p1;


以后来实现子类的方法

注意   用多态生成的对象,其实是子类的方法。因为继承了父类的方法,所以可以使用父类的方法。如果子类复写了子类的方法,子类方法将覆盖父类方法。



-------------------------------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值