JAVA菜鸟求解惑

夜霸槽 2014-05-17 11:04:28
先看代码:
class Person
{
public String name;
public int age;
public Person(String name,int age)
{
this.name =name ;
this.age=age;
}
public Person()
{
}
public void getInfo()
{
System.out.println(name);
System.out.println(age);
}
}
class Student extends Person
{
public void study()
{
System.out.println("Studding");
}
public static void main(String [] args)
{
Person p= new Person();
p.name ="小明";
p.age=21;
p.getInfo();

Student s= new Student();
s.name ="小李";
s.age=21;
s.getInfo();
s.study();
}
}

当我把父类的无参构造器 public Person() 注释掉,然后把子类的new Person()改成new Person("小明",21)后,编译器给出的错误是 无法将类Person中的构造器Person应用到给定类型。。。。求解惑
...全文
132 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜霸槽 2014-05-18
  • 打赏
  • 举报
回复
引用 4 楼 JUST_lOVE_LE 的回复:
当然啦 你父类构造器无法调用了 子类自然报错 至于第二个问题 我这里没错 你确定修改后保存了?
是我没说清楚,我把父类的无参构造器也注释掉了Pulic person(),成了这个样子: class Person { public String name; public int age; public Person(String name,int age) { this.name =name ; this.age=age; } public void getInfo() { System.out.println(name); System.out.println(age); } } class Student extends Person { public void study() { System.out.println("Studding"); } public static void main(String [] args) { Person p= new Person("小明",21); p.getInfo(); } }
北落师门_Orz 2014-05-18
  • 打赏
  • 举报
回复
当然啦 你父类构造器无法调用了 子类自然报错

至于第二个问题 我这里没错 你确定修改后保存了?
夜霸槽 2014-05-18
  • 打赏
  • 举报
回复
引用 2 楼 u013147600 的回复:
你子类没有定义构造函数,当运行是系统就会产生无参的默认构造函数,但当运行子类无参的构造函数时就要去调用父类无参的构造函数 ,没有的话就会报错
但是如果我没有运行子类的构造函数,也就是我把Student s= new Student();及其以后的句子注释掉,main函数里只有Person的对象new Person("小明",21),以及p.getInfo();函数,还是会出现同样的错误。这是为什么
夜霸槽 2014-05-18
  • 打赏
  • 举报
回复
谢谢各位
  • 打赏
  • 举报
回复
class Person{
	public String name;
	public int age;
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
	public void getInfo(){
		System.out.println(name);
		System.out.println(age);
	}
}
class Student extends Person{
	public Student(String name,int age){
		//调用父类构造器
		super(name,age);
	}
	public void study(){
		System.out.println("学习");
	}
	public static void main(String[] args){
		Person p=new Person("小米",21);
		p.getInfo();
		Student c=new Student("小兰",20);
		c.getInfo();
		c.study();
	}
}
北落师门_Orz 2014-05-18
  • 打赏
  • 举报
回复
那你继承不了就很正常啦,因为你的子类没有与父类相符的构造器,你可以在子类中 写一个构造器有两个参数就好了
六月心悸 2014-05-17
  • 打赏
  • 举报
回复
你子类没有定义构造函数,当运行是系统就会产生无参的默认构造函数,但当运行子类无参的构造函数时就要去调用父类无参的构造函数 ,没有的话就会报错
S117 2014-05-17
  • 打赏
  • 举报
回复
子类的构造函数要调用父类的构造函数 你把父类无参构造函数注释了 子类没法调用父类得了

62,616

社区成员

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

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