java的多态(一)

package grammar;
//定义好父类
public class Parent {
    //一个属性
 private String name = "Parent";
    //
 public String getName() {
  return name;
 }
  
 public void setName(String name) {
  this.name = name;
 }
  //一个方法
 public void doSomething(Parent parent) {
  System.out.println(parent.getName());
  System.out.println(parent.getClass());
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
       Parent parent=new Parent();
    // 传递A的引用,则调用的是Son1类的getName方法  
       parent.doSomething(new Son1());
    // 传递A的引用,则调用的是Son2类的getName方法  
       parent.doSomething(new Son2());
     /*  Son1
        class grammar.Son1
        Son2
        class grammar.Son2
       */
       //由此可见,父类的doSomething方法多态地调用了我们传递的对象的getName方法,而不是Parent类本身的getName方法。
 }
}

class Son1 extends Parent {
 private String name = "Son1";
    //继承
 public String getName() {
  return name;
 }
}

class Son2 extends Parent {
 private String name = "Son2";
    //继承
 public String getName() {
  return name;
 }
}


猜你喜欢

转载自blog.51cto.com/10983206/2564402