public class T4  {  
{
System.out.println("T4的属性:"+test());
}
T4(){
System.out.println("T4构造函数 " );
}
String test(){
System.out.println("test方法的内容" );
return "ssss";
}
int aa(int a ){
System.out.println("int a ="+a );
return 0;
}
public static void main(String[] args){
     T4 b = new T4()    ;
}  
}public class T5 extends T4{  
{
System.out.println("T5的属性:"+b.test());
}
int aa(long a ){
System.out.println("long a ="+a );
return 0;
}
T5(){
System.out.println("T5构造函数 " );
}
public static void main(String[] args){
     T5 b = new T5()    ;
  b.aa(2);
}  
}
D:\javatest>javac T4.java
T4.java:21: 类 T5 是公共的,应在名为 T5.java 的文件中声明
public class T5 extends T4{
       ^
T4.java:23: 找不到符号
符号: 变量 b
位置: 类 T5
                System.out.println("T5的属性:"+b.test());
                                            ^
2 错误

解决方案 »

  1.   

    分别命名T4.java 一个文件 T5.java一个文件
    或者把T4的前面的public 去掉 ,把文件命名为 T5.java

    System.out.println("T5的属性:"+b.test());

    b是在main方法中定义的 不能使用除非定义b为T5的一个属性,否则不能这样子使用
      

  2.   

    要么就分成两个java文件写 一个T4.java 一个T5.java
    要么就去掉一个public,文件名命名为带public的类的名字静态块中 b 未定义
      

  3.   

    LZ你在同一个文件中都能有两个public (你也太牛了吧),
      

  4.   

    第一个问题:
    1个Java文件中只能存在1个public声明的类。如果两个类非要写在一个文件中,那么只能用public关键字
    来修饰到底哪个才是 真正意义上的主类。第二个问题:
    T5的普通代码块中的b变量没有定义,所以不能使用。另外,main函数只能写在public修饰的类中才能被识别。
      

  5.   

    我这样写就对了class T4  {  
    {
    System.out.println("T4的属性:"+test());
    }
    T4(){
    System.out.println("T4构造函数 " );
    }
    String test(){
    System.out.println("test方法的内容" );
    return "ssss";
    }
    int aa(int a ){
    System.out.println("int a ="+a );
    return 0;
    }
    }public class T5 extends T4{  
    {
    System.out.println("T5的属性:"+super.test());
    }
    int aa(long a ){
    System.out.println("long a ="+a );
    return 0;
    }
    T5(){
    System.out.println("T5构造函数 " );
    }
    public static void main(String[] args){
         T5 b = new T5()    ;
      b.aa(2L);
    }  
    }
      

  6.   

    但是为啥public class T5 extends T4{   
     { 
     System.out.println("T5的属性:"+super.test());
     } 
    需要加一个super呢  不加super就出错 换成    T5的属性:"+b.test()) 就出错D:\javatest>javac T5.java
    T5.java:20: 找不到符号
    符号: 变量 b
    位置: 类 T5
                    System.out.println("T5的属性:"+b.test());
    既然继承了就相当于是自己的函数了啊 怎么不能调用呢
      

  7.   

    哦 在main函数中调用 成了
    public static void main(String[] args){
         T5 b = new T5()    ;
      b.aa(2L);
    b.test();
    }