public Class Parents {
 public void print() {
  System.out.println(“parents”);
 }
}
/**
 * 定义两个派生类
 */
public Class Father extends Parents {
 public void print() {
  System.out.println(“father”);
 }
}
public Class Mother extends Parents {
 public void print() {
  System.out.println(“mother”);
 }
}
/**
 * 测试输出结果的类
 */
public Class Test {
 public void find(Parents p) {
  p.print();
 }
 public static void main(String[] args) {
  Test t = new Test();
  Father f = new Father();
  Mother m = new Mother();
  t.find(f);
  t.find(m);
 }
}

解决方案 »

  1.   

    首先指出几个错误:1. java中声明一个类,用小写的"class",而不是"Class"。这是个编译错误。2. 命名太差。既然父类是Parent,为什么子类不声明成 Child1, Child2. 你把子类声明成“父亲,母亲”不是误导人么? find命名也太差。为什么不改成“printItsType"?3. java中,应该使用英文中的引号 " 而不是汉字的引号”和“. 也是个编译错误。再指出两点:1. 尽量不要用main函数。这绝对是个编程习惯问题。2. 使用JUnit。完全消除main()。最后告诉你结果:
    --------- 开始 -------------
    father
    mother
    --------- 结束 -------------不明白你说的“java的多态 的父类引用指向子类对象??”是个什么问题。一个对象 是哪个类的实例,就会调用哪个类的方法。
    比如在这个例子中, 
    Father f = new Father(); 
    这个 f 就是 Father类的实例,而不是Parent类的实例,
    因此  t.find(f);  
    会调用 
    public void find(Parents p) {
      p.print();

    这个方法。在该方法的运行中, p 应该是 Father类的实例,而不是Parent类的实例,
    因此 p.print(); 
    得到的结果,就是 Father类中的print方法。
    不知道你明白了没有。两年来我在java版上的第一帖。最后给LZ的忠告:别有问题就问!多动脑子!多运行! 解决问题的时间更快!还锻炼了动手能力。
      

  2.   

    首先指出几个错误:1. java中声明一个类,用小写的"class",而不是"Class"。这是个编译错误。2. 命名太差。既然父类是Parent,为什么子类不声明成 Child1, Child2. 你把子类声明成“父亲,母亲”不是误导人么? find命名也太差。为什么不改成“printItsType"?3. java中,应该使用英文中的引号 " 而不是汉字的引号”和“. 也是个编译错误。再指出两点:1. 尽量不要用main函数。这绝对是个编程习惯问题。2. 使用JUnit。完全消除main()。最后告诉你结果:
    --------- 开始 -------------
    father
    mother
    --------- 结束 -------------不明白你说的“java的多态 的父类引用指向子类对象??”是个什么问题。一个对象 是哪个类的实例,就会调用哪个类的方法。
    比如在这个例子中, 
    Father f = new Father(); 
    这个 f 就是 Father类的实例,而不是Parent类的实例,
    因此  t.find(f);  
    会调用 
    public void find(Parents p) {
      p.print();

    这个方法。在该方法的运行中, p 应该是 Father类的实例,而不是Parent类的实例,
    因此 p.print(); 
    得到的结果,就是 Father类中的print方法。
    不知道你明白了没有。两年来我在java版上的第一帖。最后给LZ的忠告:别有问题就问!多动脑子!多运行! 解决问题的时间更快!还锻炼了动手能力。
      

  3.   

    比如:class A {
    }
    class B extends A {}
    public class Test{
       public static void main(String[] args) {
         A a = new B(); 
       }
    }o了。。
      

  4.   

    我这里有一篇转帖 你可以参考一下
    对Java多态性综合运用的探讨
    http://blog.csdn.net/yirentianran/archive/2008/04/25/2327349.aspx
      

  5.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【yuyeyi】截止到2008-08-03 09:32:12的历史汇总数据(不包括此帖):
    发帖的总数量:6                        发帖的总分数:150                      每贴平均分数:25                       
    回帖的总数量:5                        得分贴总数量:3                        回帖的得分率:60%                      
    结贴的总数量:6                        结贴的总分数:150                      
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:16.67 %               无满意结分率:20.00 %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=yuyeyi
      

  6.   

    --------- 开始 ------------- 
    father 
    mother 
    --------- 结束 ------------- 不明白你说的“java的多态 的父类引用指向子类对象??”是个什么问题。 一个对象 是哪个类的实例,就会调用哪个类的方法。 
    比如在这个例子中, 
    Father f = new Father(); 
    这个 f 就是 Father类的实例,而不是Parent类的实例, 
    因此  t.find(f);  
    会调用 
    public void find(Parents p) { 
      p.print(); 

    这个方法。在该方法的运行中, p 应该是 Father类的实例,而不是Parent类的实例, 
    因此 p.print(); 
    得到的结果,就是 Father类中的print方法。 
      

  7.   

    1#解释的很清楚了  呵呵  推荐用IDE编程  能解决很多拼写和语法错误
      

  8.   

    class human{
    private char sex;
    public human(char sex){
    this.sex=sex;
    }
    public void setSex(char sex){
    this.sex=sex;
    }
    public char getSex(){
     return sex;
    }
    }
    class man extends human{
    public man(){
    super('男');
    }
    }class woman extends human{
    public woman(){
    super('女');
    }
    }
    class test{
    public static void main(String []args){
    human w=new woman();
    human m=new man();
    System.out.println("the human is "+w.getSex());
    System.out.println("the human is "+m.getSex());
    }
    }结果:
    the human is 女
    the human is 男