注意:Test.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
我再学多态时编了三个JAVA文件,前两个都通过编译了,可最后一个却出现上面的情况。大家给点执教阿  !

解决方案 »

  1.   

    使用或覆盖了已过时的 API
    ----------------------------
    使用的方法过时,不建议使用,看doc,有替代的方法
      

  2.   

    class Person{

    String name;

    int age;


    public String getName(){

    return name;
    }

    public int getAge(){

    return age;
    }
    }class Student extends Person{

    String name;

    int age;

    public Student(String _name,int _age){

    name=_name;

    age=_age;
    }

    public String getName(){

    return name;
    }

    public int getAge(){

    return age;
    }
    }class Teacher extends Person{

    String name;

    int age;

    public Teacher(String _name,int _age){

    name=_name;

    age=_age;
    }

    public String getName(){

    return name;
    }

    public int getAge(){

    return age;
    }



    }
    public class Test{

    public void run(Person p){

    System.out.println("你的姓名是:"+p.getName()+"\n");

    java.util.Date d = new java.util.Date();

    System.out.println("你出生于:"+(d.getYear()+1900-p.getAge()));

    }

    public static void main(String[] args){

    String s1=args[0];
    int _age=Integer.parseInt(args[1]);

    Student s = new Student(s1,_age);
    Test t = new Test();
    t.run(s);

    }

    }
    就是上面的代码!
      

  3.   

    用 -Xlint:deprecation 编译,然后查API的出错的函数,里面有建议的看样子应该是Date那里错了了
      

  4.   

    int getYear() 
              
    Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.YEAR) - 1900. 
    建议你用Calendar.get(Calendar.YEAR) - 1900
      

  5.   

    Date类现在一般只用来保存时间,要处理时间格式用SimpleDateFormat类,要处理时间的日期相关用Calendar类。
      

  6.   

    这样搞:
    import java.util.Calendar;class Person { String name; int age; public String getName() { return name;
    } public int getAge() { return age;
    }
    }class Student extends Person { String name; int age; public Student(String _name, int _age) { name = _name; age = _age;
    } public String getName() { return name;
    } public int getAge() { return age;
    }}class Teacher extends Person { String name; int age; public Teacher(String _name, int _age) { name = _name; age = _age;
    } public String getName() { return name;
    } public int getAge() { return age;
    }}public class Test { public void run(Person p) { System.out.println("你的姓名是:" + p.getName() + "\n");
    Calendar ca = Calendar.getInstance();
    System.out.println("你出生于:" + (ca.get(Calendar.YEAR) - p.getAge())); } public static void main(String[] args) { String s1 = args[0];
    int _age = Integer.parseInt(args[1]); Student s = new Student(s1, _age);
    Test t = new Test();
    t.run(s); }}
      

  7.   

    你并没有正确理解主函数main所带的两个参数是什么含意阿?
    args[0]和args[1]分别代表的什么意思希望你能弄明白阿!
    如果你给一个正确的参数那么这个程序就正确了阿
    如下在eclipse3.1下边一运行了:
    class Person{ 
        String name; 
        int age;      public String getName(){ 
              return name; 
              } 
         public int getAge(){ 
              return age; 
              } 
         } class Student extends Person{ 
         String name; 
         int age; 
         public Student(String _name,int _age){ 
              name=_name; 
              age=_age; 
              } 
         public String getName(){ 
              return name; 
              } 
         public int getAge(){ 
              return age; 
              } 
    } class Teacher extends Person{ 
         String name; 
         int age; 
         public Teacher(String _name,int _age){ 
              name=_name; 
              age=_age; 
              } 
         public String getName(){ 
             return name; 
             } 
         public int getAge(){ 
             return age; 
             } 
         } public class Test{ 
        public void run(Person p){ 
         System.out.println("你的姓名是:"+p.getName()+"\n"); 
            java.util.Date d = new java.util.Date(); 
            System.out.println("你出生于:"+(d.getYear()+1900-p.getAge())); 
            } 
        public static void main(String[] args){ 
            String s1="javaStudy"; 
            int _age=20;
           Student s = new Student(s1,_age); 
           Test t = new Test(); 
           t.run(s); 
           } 
      

  8.   

    String[] args 这个字符串数组是保存运行main函数时输入的参数的,例如main函数所在的类名为test 那么你在cmd运行 java test a b c 时,args[0] = a ,args[1]=b, args[2]=c 你就可以在你的程序中调用你输入的这些变量了。
      

  9.   

    当然也有一种办法:主要是应该弄明白日期类的用法阿。
    import java.util.GregorianCalendar;
    class Person{ 
        String name; 
        int age;      public String getName(){ 
              return name; 
              } 
         public int getAge(){ 
              return age; 
              } 
         } class Student extends Person{ 
         String name; 
         int age; 
         public Student(String _name,int _age){ 
              name=_name; 
              age=_age; 
              } 
         public String getName(){ 
              return name; 
              } 
         public int getAge(){ 
              return age; 
              } 
    } class Teacher extends Person{ 
         String name; 
         int age; 
         public Teacher(String _name,int _age){ 
              name=_name; 
              age=_age; 
              } 
         public String getName(){ 
             return name; 
             } 
         public int getAge(){ 
             return age; 
             } 
         } public class Test{ 
        public void run(Person p){ 
         System.out.println("你的姓名是:"+p.getName()+"\n"); 
            GregorianCalendar d = new GregorianCalendar(); 
            System.out.println("你出生于:"+(d.DAY_OF_YEAR+1900-p.getAge())); 
            } 
        public static void main(String[] args){ 
            String s1=args[0]; 
            int _age=Integer.parseInt(args[1]); 
           Student s = new Student(s1,_age); 
           Test t = new Test(); 
           t.run(s); 
           }