请教:一段简单的继承和重载代码,报错

xhzlhc 2012-07-25 12:46:24
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 错误
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
五哥 2012-07-25
  • 打赏
  • 举报
回复
分别命名T4.java 一个文件 T5.java一个文件
或者把T4的前面的public 去掉 ,把文件命名为 T5.java


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


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

xhzlhc 2012-07-25
  • 打赏
  • 举报
回复
哦 在main函数中调用 成了
public static void main(String[] args){
T5 b = new T5() ;
b.aa(2L);
b.test();
}
xhzlhc 2012-07-25
  • 打赏
  • 举报
回复
但是为啥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());


既然继承了就相当于是自己的函数了啊 怎么不能调用呢
xhzlhc 2012-07-25
  • 打赏
  • 举报
回复
我这样写就对了

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);
}
}
csdpz 2012-07-25
  • 打赏
  • 举报
回复
第一个问题:
1个Java文件中只能存在1个public声明的类。如果两个类非要写在一个文件中,那么只能用public关键字
来修饰到底哪个才是 真正意义上的主类。

第二个问题:
T5的普通代码块中的b变量没有定义,所以不能使用。

另外,main函数只能写在public修饰的类中才能被识别。
wonkju 2012-07-25
  • 打赏
  • 举报
回复
LZ你在同一个文件中都能有两个public (你也太牛了吧),
染指黄昏 2012-07-25
  • 打赏
  • 举报
回复
要么就分成两个java文件写 一个T4.java 一个T5.java
要么就去掉一个public,文件名命名为带public的类的名字

静态块中 b 未定义

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧