小弟在编写继承时出现了 "cannot resolove symbol constructor ZTeaher---自己构造的类"
我定义了person这个类,Teacher继承了person,ZTeacher又继承了Teacher,现在想定义了ZTeacher的一个对象,再调用里面的方法,但是编译时候就出现了上面的错误.请大虾解释一下,指点一下.先谢过.
我想补充一点就是我定义了ZTeacher的对象例如ZTeacher a之后,通过a.还可以显示看到这个类的方法.
我定义了person这个类,Teacher继承了person,ZTeacher又继承了Teacher,现在想定义了ZTeacher的一个对象,再调用里面的方法,但是编译时候就出现了上面的错误.请大虾解释一下,指点一下.先谢过.
我想补充一点就是我定义了ZTeacher的对象例如ZTeacher a之后,通过a.还可以显示看到这个类的方法.
ZTeacher? ZTeaher?
我定义了person这个类,Teacher继承了person,ZTeacher又继承了Teacher,现在想定义了ZTeacher的一个对象,再调用里面的方法,但是编译时候就出现了上面的错误.请大虾解释一下,指点一下.先谢过.
我想补充一点就是我定义了ZTeacher的对象例如ZTeacher a之后,通过a.还可以显示看到这个类的方法.
switch(b[0])
{
case '1':
Student s = new Student();
s.input();
v.add(s);
break;
case '2':
ZTeacher a = new ZTeacher();
a.input();
v.add(a);
break;
case '3':
GTeacher c = new GTeacher();
c.input();
//add GTeacher
break;
case '4':
//return upper level
return;
default:
System.out.println("错");
break;
}
}
public class ZTeacher extends Teacher
{
private String majorIn; public ZTeacher(String majorIn, String name, int age, String addr, String id, String title, float salary, String department)
{
super(name, age, addr, id, title, salary, department);
this.majorIn = majorIn;
}
public void setMajorIn(String majorIn)
{
this.majorIn = majorIn;
}
public void input() throws Exception
{
byte b[] = new byte[50];
super.input();
System.out.println("majorIn :");
int i = System.in.read(b);
majorIn = new String(b,0,i-2);
}
public void display()
{
super.display();
System.out.println("MajorIn: " + majorIn);
}
}
{}; //不是可以省的吗?调用时还是可以用的吧?
你的构造函数定义的是需要带参数的,但你生成ZTeacher实例的时候调用的却是不带参数的,这样当然会出错。
ZTeacher a = new ZTeacher();//这里的new ZTeacher()就是去调用不带参数的构造函数
lz的类中已经显式的定义了带参数的构造函数,所以缺省的构造函数就不存在了。
如果你需要无参的构造函数,需要自己再定义。
//构造函数的代码
//写你想在生成对象时做的事情
}
public ZTeacher(){//这里可以什么也没有,但一定要写出来,就是显式的定义的意思}事实上一般不推荐 这样写 public ZTeacher(String majorIn, String name, int age, String addr, String id, String title, float salary, String department)
而是用
setMajor(String majorIn){...}
setName(String name)
.....
//构造函数的代码
//写你想在生成对象时做的事情
}ftiger(哈哈鱼)说的对,即使代码为空,这也是显式的定义的无参数的构造函数。
一般来说,构造函数里应当为一些成员属性进行初始化,比如你可能定义majorIn、name等属性,生成该对象调用对象的方法之前,这些属性应当有值,构造函数里面就是做这样的事情。感觉lz没有掌握面向对象的基本概念,强烈建议在这方面巩固加强。