我正在尝试学习java中的对象和类,而在线教程给我的代码是我无法在eclipse上编译/运行的。
当我在保存课程后编译程序时,它给出了错误:
线程“main”中的异常java.lang.Error:未解决的编译问题:
对于Puppy类型,方法setAge(int)是未定义的
对于Puppy类型,方法getAge()未定义
在Puppy.main(Puppy.java:23)
public class Puppy{
int puppyAge;
public Puppy(String name){
// This constructor has one parameter, name.
System.out.println("Passed Name is :" + name );
}
public setAge( int age ){
puppyAge = age;
}
public getAge( ){
System.out.println("Puppy's age is :" + puppyAge );
return puppyAge;
}
public static void main(String []args){
/* Object creation */
Puppy myPuppy = new Puppy( "tommy" );
/* Call class method to set puppy's age */
myPuppy.setAge( 2 );
/* Call another class method to get puppy's age */
myPuppy.getAge( );
/* You can access instance variable as follows as well */
System.out.println("Variable Value :" + myPuppy.puppyAge );
}
}
http://www.tutorialspoint.com/java/java_object_classes.htm
(代码在页面中间)
它是一个构造函数类程序。 应该没有返回类型。
答案 0 :(得分:10)
您是(或教程)缺少方法签名中的返回类型。
public setAge( int age ){
puppyAge = age;
}
public getAge( ){
System.out.println("Puppy's age is :" + puppyAge );
return puppyAge;
}
应该是
public void setAge( int age ){
puppyAge = age;
}
public int getAge( ){
System.out.println("Puppy's age is :" + puppyAge );
return puppyAge;
}
答案 1 :(得分:7)
您缺少方法的返回类型。
public setAge( int age ){
应该是
public void setAge( int age ){
和
public getAge( ){
应该是
public int getAge( ){
答案 2 :(得分:4)
您的方法未说明返回的内容(类型)。将它们改为:
public void setAge(int age) { ... }
public int getAge() { ... }
文档列出了Java方法的六个部分:
更多内容阅读:http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html
答案 3 :(得分:2)
您必须将回复类型添加到getAge()
和setAge()
。
Java Language Specification注意到方法声明应遵循以下格式:
MethodModifiers(可选)TypeParameters(可选)结果MethodDeclarator引发(可选)
放松,让我们慢慢看看:
public class Puppy{
int puppyAge;
public Puppy(String name){
// This constructor has one parameter, name.
System.out.println("Passed Name is :" + name );
}
public void setAge( int age ){
puppyAge = age;
}
public int getAge( ){
System.out.println("Puppy's age is :" + puppyAge );
return puppyAge;
}
public static void main(String []args){
/* Object creation */
Puppy myPuppy = new Puppy( "tommy" );
/* Call class method to set puppy's age */
myPuppy.setAge( 2 );
/* Call another class method to get puppy's age */
myPuppy.getAge( );
/* You can access instance variable as follows as well */
System.out.println("Variable Value :" + myPuppy.puppyAge );
}
}
答案 4 :(得分:0)
您的方法签名存在问题。 他们应该是这样的: public void setAge(int age){} public int getAge(){}
你错过了类型。 我建议你查看core java tutorial。 很好地解释了。