import java.io.*;
public class test
{
 public static void main(String args[])
  {
   mytest myobject = new mytest("猪八戒",10);
   System.out.println(myobject.name);
   System.out.println(myin.ttt);
  }
}
class mytest
 {
  static int ttt=99;
  String name;
  int age;
  mytest(String na, int ag)
  {this.name = na;
   this.age = ag;
  System.out.println("test");}
 }
 
class myin extends mytest{
}

解决方案 »

  1.   

    只有final修饰的类才不能被继承
    定义构造器的类可以被继承
    不过构造器要在子类里重新定义,哪怕一样的也要重新定义
      

  2.   

    class mytest
     {
      static int ttt=99;
      String name;
      int age;
      mytest(String na, int ag)
      {this.name = na;
       this.age = ag;
      System.out.println("test");}
     }
    看清楚你这个类的,你定义了自己的构造函数,所以Java语言机制的默认构造函数(就是不带参数的那个,关于这个默认构造函数访问级别请参阅书籍,我在这里不讲了)是不会自动生成的,但在你的子类中
    class myin extends mytest{
    }你没有定义构造函数的,所以那个默认的构造函数自动生成的,但是根据机制编译/运行的时候需要调用父类的默认构造函数的(因为你没有在子类构造函数明确调用),但是实际上根据上面说的,父类没有默认构造函数的,所以当然就错误了。解决就是,你要在子类构造函数中明确调用父类构造函数的,如果父类没有默认的构造函数的话。应该明白了吧。自己可以好好看书,理解一下这些基本的概念的。这才是基础
      

  3.   

    关于限制类被继承的解决方案很多的,我在这里不讲了,因为世界上那些顶级的java/C++大师提供的方案真的是太绝妙了。
      

  4.   

    《Thinking in java》中对这个问题,写得非常仔细
    import java.io.*;
    public class test
    {
     public static void main(String args[])
      {
       mytest myobject = new mytest("猪八戒",10);
       System.out.println(myobject.name);
       System.out.println(myin.ttt);
      }
    }
    class mytest
     {
      static int ttt=99;
      String name;
      int age;
      mytest(String na, int ag)
      {this.name = na;
       this.age = ag;
      System.out.println("test");}
     }
     
    class myin extends mytest{
       myin(String na,int ag){
        super(na,ag);
    }
    }
      

  5.   

    就是super()
    这个就是调用弗雷的构造函数