2011-04-28 76 views
3

我在理解Java中的类时遇到了一些麻烦。Java类对我非常困惑

如你如何在辅助类这样的声明“输入器”?

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(); 

并感谢大家给了我一个热烈的欢迎计算器! :d

+3

阅读教程掌握基本知识:http://download.oracle.com/javase/tutorial/ – 2011-04-28 14:13:03

+0

我建议您遵循Java编码对话框,并使用camelCase作为方法名称,使用UpperCase作为类名称。这样你就不会混淆方法和类名。当你可以抛出一个异常时,也不要调用System.exit(),比如'throw new IllegalArgumentException(“你不能把它留空!”) – 2011-04-28 14:17:01

+0

@BalusC那么你如何将它们声明为类?我唯一感到困惑的是IllegalArgumentException(我现在正在获取)以及类和方法。 – 2011-04-28 14:23:57

回答

10

你的问题不在类中,它与构造函数和方法以及它们之间的区别。

方法可以有你喜欢的任何名称,但必须声明返回类型(可能void),他们正在这样调用:

ReturnType r = methodName(param1, param2) 

构造函数用于创建的类(对象)的实例。它们必须具有相同的名称作为类,它们不得返回类型(甚至没有void),他们正在这样调用:

MyClass m = new MyClass(param1, param2); 

有几个问题在你的代码:

  • Helper有一个构造函数的正确名称,而是因为它声明void返回类型,编译器将它视为一种方法。
  • Inputter甚至没有正确的构造函数名称。与new使用它作为一个构造函数,它必须是一个名为Inputter

也许你应该开始了阅读的Java教程的introduction to OO部分类的一部分。

+0

@ micheal-borgwardt谢谢! – 2011-04-28 14:32:02

+0

好的,你的答案比我的+1先生好 – brandon 2011-04-28 14:41:22

1

输入器()已定义的是一个方法,或者你可以称之为行为。您无法为行为创建实例。

还有一个问题是,你不能有一个构造函数的返回类型。助手是类名和构造器具有返回类型,是不正确

关于你quesiton,如果你要调用输入器,你应该这样做像下面这样。

Helper helper = new Helper("test"); 
helper.Inputter(100); 

以小写字母开始方法是一种很好的做法。

+0

小小号是什么意思?如在:输入者? – 2011-04-28 14:19:57

+0

@SmilingDevil:是的.. – bragboy 2011-04-28 14:22:11

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类。

0

代码中的输入器不是类。这是一种方法。

为了使下面的语句正确:

Helper x = new Inputter(); 

你需要创建输入器类扩展 Helper类。

0

Inputter是不是一类。这是Helper课程的一种方法。所以你不能实例化它。

0

你可以这样调用

String someString = "some string"; 
Helper x = new Helper(someString); 
int someInt = 1; 
x.Inputter(someInt); 
1

这里的唯一对象是助手。如果你想使一个新的帮手,那么你会说

Helper X = new Helper("blah blah"); 

实例,如果你想调用输入器,那么你刚才说

X.Inputter(1234); 

这将调用输入器功能的特定实例助手的X

0

首先,从基础开始。

类最能代表名词。这意味着一个类是一个(通常)一个事物的模型。方法最能代表这些名词上的动词。摆脱这种理想有时是必要的;然而,你越远离这样的理想,就越难理解发生了什么。随着对例外的点头,因为你是一个初学者,让我们不要被打破在例外,但遵守规则。

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; 
    } 
} 

通读上面的类,并将其样式用于您的开始程序。当你发现它的风格不仅仅是帮助你时,你可能找到了一个需要其他技术的地方。

0

new关键字保留用于实例化(用于表示“制作新”类的花哨词)。您的班级制作方式,当您制作新的Helper时,会运行一个功能。这是构造函数,并且被命名为类。

一旦实例化一个类,你获得在其内访问东西(例外是static方法/属性,任何人都可以访问它);所有这些都不是privateprotected。现在

,对OOP很短的介绍(面向对象编程): 你有类,基本上都是功能块。在这些类中有两件事:方法和属性(许多名称,但这就是我称之为的)。

方法基本上是一个很好的ol函数:它有一个输入和一个输出。 属性与其他变量非常相似。

现在,Java和其他许多面向对象的语言,有类的声明和类实例之间的分离。类声明基本上是静态编码的类;正是你放在代码中的东西。类实例正在使用类声明并将其投入使用:您可以更改和使用它们中的方法和属性。

所以,如果你想调用输入器,你应该这样做是这样的:

Helper bob = new Helper('Bloop'); 
bob.Inputter(42); 

这里发生了什么?我们创建了一个名为bob的新变量,其类型为Helper。在构建新的Helper时,我们也运行构造函数。查看构造函数,我们传递一个值(在这种情况下,'Bloop'),并且该函数正常运行,无需我们手动调用它。

现在我们要使用Helper类的Inputter方法。为此,我们需要通过使用bob.(注意点)访问Helper类的实例(在本例中为bob),然后像调用其他函数一样调用它:Inputter(parameters)。将它粘合在一起我们得到了bob.Inputter(parameters)

这是一个对象方向的真正相当蹩脚的解释,但没有涵盖那么多,但它应该让你开始。我建议写一本关于Java的书或阅读在线教程。