构造函数和方法之间的java差异
下面是我在教程中找到的一个例子,一个构造函数的例子。我得到了大部分,但我不明白为什么需要构造函数和方法
public Puppy(String name){
System.out.println("Passed Name is :" + name );
}
我的问题是,是什么阻止你这样做
public static void Puppy(String name){
System.out.println("Passed Name is: "+name);
}
这两个人不是做了同样的事吗
以下是完整的程序供参考:
public class Puppy {
int puppyAge;
public Puppy(String 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);
//what does this return do? since the puppyAge is already printed above.
return puppyAge;
}
public static void main(String []args){
Puppy myPuppy = new Puppy("tommy");
myPuppy.setAge(2);
myPuppy.getAge();
System.out.println("Variable Value :" + myPuppy.puppyAge);
}
}
# 1 楼答案
在Java Spec for Constructors中指出:
构造函数不返回任何内容,因此它们没有返回类型
不能重写构造函数
它们不能直接访问实例变量,而是必须使用
this
和super
委托给类的变量# 2 楼答案
构造函数和方法之间有很大的区别。当你像在程序中一样实例化一个对象时
通过使用new关键字,JVM调用构造函数生成对象。因此,构造函数生成不存在的对象,但方法与存在的对象相关联。你可以在这个链接上阅读更多内容 http://www.javaworld.com/article/2076204/core-java/understanding-constructors.html
# 3 楼答案
关于构造函数已经有了一些很好的答案
一个小问题;不能有与类同名的静态方法。该名称是为构造函数保留的
# 4 楼答案
您没有得到实例的基本概念,这在OOP中是基本的。如果你想要一个比喻,让我们谈谈汽车
我敢肯定你知道什么是汽车;你知道它能让你从一个地方移动到另一个地方,它有四个轮子等等。这是一个概念,你车库里的实际汽车就是这个概念的一个实例(<;=>;class)
构造函数的目标是创建一个实例,而不是打印一些文本。如果没有构造函数,您将永远无法调用类的非静态方法。你将无法驾驶概念车,你需要先造一辆车
只要回顾一下这些概念;没有它,你将一事无成
# 5 楼答案
我想你的问题是为什么构造函数是用
。。。而不是
。。。,对吧?
如果是,首先您应该知道构造函数是一个类所拥有的特殊方法,每当您创建该类的新实例时都会调用该类。例如,如果你有这个类
。。。,然后,每当您创建此类的新实例时,如
。。。,将调用构造函数并执行该方法。(在本例中,它将在屏幕上打印“Hello World”。)
也就是说,您可以看到构造函数是一个方法,但它是在实例化类时调用的一个特殊方法。因此,关于您的问题,构造函数之所以这样而不是常规方法头是正确的,是为了向编译器表明它是一个构造函数,而不是一个常规方法。如果您编写
public void Clazz ()
而不是public Clazz ()
,那么编译器将无法识别您的构造函数,并且会认为它只是一个常规方法请注意,构造函数从不返回任何内容,因此不必使用void关键字。此外,将构造函数设为静态也没有意义,因为在实例化新对象时会调用构造函数
# 6 楼答案
构造函数是方法,但是它们是特殊类型的方法。构造函数是没有返回类型且必须以其封闭类命名的方法。那么为什么我们需要构造器呢?这就是我们创建类实例的方法。当您想要创建某个类的实例时,可以通过调用其构造函数来实现。构造函数为对象保留内存,并返回对新创建对象的引用