我在理解Java中的类时遇到了一些麻烦。
比如如何在helper类中声明“Inputter”?
public class Helper
{
public void Helper(String z)
{
if(z.length() == 0)
{
System.out.println("You can't leave it blank!");
System.exit(1);
System.out.println("It's not working... ;(");
}
}
public void Inputter(int a)
{
// blah blah
}
}
你会这样称呼它吗?
Helper x = new Inputter();
请帮助,不,这不是一个家庭作业问题。
谢谢, 微笑
编辑:这是对的吗?public class Helper
{
public Helper(String z)
{
if(z.length() == 0)
{
System.out.println("You can't leave it blank!");
System.exit(1);
System.out.println("It's not working... ;(");
}
}
public void Inputter(int a)
{
// blah blah
}
}
并声明:
Helper x = Helper();
感谢大家对StackOverflow的热烈欢迎! :d
答案 0 :(得分:10)
你的问题不在于类,而在于构造函数和方法,以及它们之间的区别。
方法可以有你喜欢的任何名称,它们必须声明一个返回类型(可能是void
),它们的调用方式如下:
ReturnType r = methodName(param1, param2)
构造函数用于创建类(对象)的实例。它们必须与类名相同,它们不能具有返回类型(甚至不是void
),它们的调用方式如下:
MyClass m = new MyClass(param1, param2);
您的代码中存在几个问题:
Helper
具有构造函数的正确名称,但由于它声明了void
返回类型,因此编译器会将其视为方法。Inputter
甚至没有构造函数的正确名称。要将其用作new
的构造函数,它必须是名为Inputter
也许你应该开始阅读Java教程的introduction to OO部分。
答案 1 :(得分:1)
您定义的Inputter()是一种方法,或者您可以将其称为行为。您无法为行为创建实例。
另一个问题是你不能在构造函数上有返回类型。 Helper是类名,构造函数的返回类型不正确
关于你的问题,如果你想调用Inputter,你应该这样做。
Helper helper = new Helper("test");
helper.Inputter(100);
使用较小的大小写字母启动方法是一种很好的做法。
答案 2 :(得分:1)
您必须创建Helper
的实例才能使用Inputter
:
Helper x = new Helper("some string");
到使用 Inputter
,试试这个:
//create a new helper
Helper x = new Helper("some string");
//use the Inputter method of the helper.
x.Inputter(1);
这里要理解的是Helper
是类,x
是类的实例,Inputter
是实例Helper
类中的方法(与静态方法不同)。
答案 3 :(得分:1)
这里唯一的对象是帮手。如果你想创建一个新的帮助器,那么你将通过说
来实例化它Helper X = new Helper("blah blah");
如果您想调用输入器,那么您只需说
X.Inputter(1234);
将为Helper的特定实例X调用Inputter函数
答案 4 :(得分:0)
代码中的输入器不是类。这是一种方法。
使以下陈述正确:
Helper x = new Inputter();
您需要创建扩展 Helper类的输入类。
答案 5 :(得分:0)
Inputter
不是一个班级。这是Helper
类的方法。所以你无法实例化它。
答案 6 :(得分:0)
你可以这样称呼它
String someString = "some string";
Helper x = new Helper(someString);
int someInt = 1;
x.Inputter(someInt);
答案 7 :(得分:0)
首先,从基础开始。
类最能代表名词。这意味着Class是(通常)一个东西的模型。方法最能代表那些名词上的动词。有时需要摆脱这种理想;然而,你越远离这样的理想,就越难理解正在发生的事情。通过对异常的点头,因为你是一个初学者,让我们不要在异常中被束缚,而是遵循规则。
public class Person {
private String name;
private int age;
public Person(String name) {
this.name = name;
this.age = -1;
}
public void setAge(int value) {
if (value < 0) {
throw new IllegalArgumentException("Age must be greater than zero");
}
this.age = value;
}
public int getAge() throws IllegalStateException {
if (age < 0) {
throw new IllegalStateException("Age was not set");
}
return this.age;
}
}
通读上面的课程,并将其风格用于您的开始课程。当你发现它的风格阻碍了你而不是帮助你时,那么你可能已经找到了需要其他技术的地方。
答案 8 :(得分:0)
new
关键字保留用于实例化(用于说“制作新”)类的花哨字。你的类的制作方式,当你创建一个新的Helper
时,就会运行一个函数。这是构造函数,并且被命名为类。
实例化一个类后,您就可以访问其中的好东西(例外是static
方法/属性,任何人都可以访问它);所有课程内都不是private
或protected
。
现在,OOP(面向对象编程)的简短介绍: 你有类,基本上是功能块。在这些类中有两件事:方法和属性(许多名称,但我称之为。)
方法基本上是一个很好的功能:它有输入和输出。 属性与任何其他变量非常相似。
现在,在Java和许多其他OO语言中,类声明和类实例之间存在分离。类声明基本上是静态编码类;正是你在代码中放入的内容。类实例正在使用类声明并将其投入使用:您可以更改并使用其中的方法和属性。
所以,如果你想调用Inputter,你应该这样做:
Helper bob = new Helper('Bloop');
bob.Inputter(42);
这里发生了什么?我们创建了一个名为bob
的新变量,其类型为Helper
。构造新的Helper时,我们也运行构造函数。查看构造函数,我们向它传递一个值(在本例中为'Bloop'
),函数正常运行,我们不必手动调用它。
现在我们要使用Helper类的Inputter方法。为此,我们需要访问Helper类的实例(在我们的例子中为bob
),使用bob.
(注意点),然后像任何其他函数一样调用它:{{1} }。将它们粘合在一起我们得到Inputter(parameters)
这是对Object方向的一个非常蹩脚的解释,并没有涵盖那么多,但它应该让你开始。我建议你买一本关于Java的书或阅读在线教程。