| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1023 人关注过本帖
标题:请教一个关于对象声明的问题?
只看楼主 加入收藏
独孤客
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-5-1
收藏
 问题点数:0 回复次数:15 
请教一个关于对象声明的问题?
class A1
{
public int A1(int a)
{
return a+1;
}
}
class B1 extends A1
{
public int B1(int a)
{ this.a=a;
return a+2;
}
public static void main(String args[])
{
A1 a1=new B1(2);
System.out.println(a1.A1(0));
}
}
编译时出现错误:
symbol :constructor B1(int)
location :class B1
A1 a1=new B1(2);
为什么会错呢?

搜索更多相关主题的帖子: int 声明 对象 public class 
2006-11-02 21:08
seablue1023
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2006-5-26
收藏
得分:0 
public int A1(int a) //构造方法不能有返回类型
{
return a+1;
}



public int B1(int a) //构造方法不能有返回类型
{ this.a=a;
return a+2;
}

[此贴子已经被作者于2006-11-2 21:42:51编辑过]


2006-11-02 21:41
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
错就错在你的父类没有提供默认的构造函数
要改的话
要么你的子类显示的调用一下父类的有参构造函数
要么在你的父类加一个无参构造函数

可惜不是你,陪我到最后
2006-11-02 22:41
独孤客
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-5-1
收藏
得分:0 
是加这条语句么super(a)?

乘天地之正,御六气之辩,以游于无穷,是为逍遥!!!
2006-11-04 20:22
独孤客
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-5-1
收藏
得分:0 
好象没用哦?

乘天地之正,御六气之辩,以游于无穷,是为逍遥!!!
2006-11-04 20:25
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

就是加一个super(a),一个要放在第一句
或者给父类定义一个无参的构造函数


可惜不是你,陪我到最后
2006-11-04 20:40
独孤客
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-5-1
收藏
得分:0 
我加了,还是一样的!
class B1 extends A1
{
public int B1(int a)
{ super(a);
return a+2;
}
public static void main(String args[])
{
A1 a1=new B1(2);
System.out.println(a1.A1(0));
}
}

乘天地之正,御六气之辩,以游于无穷,是为逍遥!!!
2006-11-04 21:27
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你那什么东西啊,构造函数能有返回值么?
应该是
public B1(int a){
super(a);
}
还有,你的父类
好好学学基础吧

可惜不是你,陪我到最后
2006-11-05 09:09
独孤客
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-5-1
收藏
得分:0 

俺的确是在学基础!那为什么去掉A1 a1=new B1(2)里的2又能运行呢?


乘天地之正,御六气之辩,以游于无穷,是为逍遥!!!
2006-11-05 15:39
独孤客
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2006-5-1
收藏
得分:0 
class Super{
public float getNum(){
return 3.0f;
}
}
public class Sub extends Super{
public void getNum(){
}
}
如果子类中的一个方法与它超类中的方法有相同的方法名和类型声明,称子类中的方法覆盖超类中的方法如果不同,则谓之重载。那么这个例子编译时为什么会出错!

乘天地之正,御六气之辩,以游于无穷,是为逍遥!!!
2006-11-05 16:40
快速回复:请教一个关于对象声明的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017035 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved