---------------------- 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