Java类对我来说非常困惑

时间:2011-04-28 14:10:39

标签: java oop class subclass

我在理解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

9 个答案:

答案 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方法/属性,任何人都可以访问它);所有课程内都不是privateprotected

现在,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的书或阅读在线教程。