方法与Java中的构造函数

我刚刚开始用Java编程。 在谈论方法和构造函数时,我们使用的文本是缺乏的。 我不确定什么是方法或构造函数,是什么使每个独特的。 有人能帮我定义他们并区分两者吗?

构造函数和方法之间的重要区别是构造函数创build并初始化尚不存在的对象,而方法则对已经存在的对象执行操作。

构造函数不能直接调用; 当new关键字创build一个对象时,它们被隐式调用。 可以直接在已经用new创build的对象上调用方法。

代码中的构造函数和方法的定义看起来很相似。 他们可以采取参数,他们可以有修饰符(如public ),他们有方括号括号。

构造函数必须使用与类名称相同的名称命名。 他们不能返回任何东西,甚至void (对象本身是隐式返回)。

必须声明方法才能返回某些东西,尽pipe它可能是void

主要区别是

1. 构造函数用于初始化对象的状态,其中方法暴露对象的行为。

2. 构造函数不能有返回types,因为方法必须有返回types。

3. 构造函数的名称与类名相同, 方法可以是也可以不是相同的类名。

4. 构造函数隐式调用方法显式调用的地方。

5. 构造函数编译器提供了方法编译器不提供的默认构造函数。

其他教练和助教偶尔会告诉我,施工人员是专门的方法。 我总是争辩说, 在Java构造函数不是专门的方法

如果构造函数是方法,我会期望它们具有与方法相同的能力。 至less他们至less会有更多的相似之处。

构造函数与方法有什么不同? 让我来计算一下…

  1. 构造函数必须用new运算符调用,而方法不能用new运算符调用。 相关:构造函数不能按名称调用,而方法必须按名称调用。

  2. 构造函数可能没有返回types,而方法必须有返回types。

  3. 如果一个方法具有与该类相同的名称,则它必须具有返回types。 否则,它是一个构造函数。 事实上,你可以在同一个类定义中有两个MyClass()签名,它们的处理方式不同,应该说服所有的构造函数和方法是不同的实体:

     public class MyClass { public MyClass() { } // constructor public String MyClass() { return "MyClass() method"; } // method } 
  4. 构造函数可能会初始化实例常量,而方法可能不会。

  5. 公共和受保护的构造函数不被inheritance,而inheritance公共和受保护的方法。

  6. 构造函数可以调用超类或相同类的构造函数,而方法不能调用super()或this()。

那么,关于方法和构造函数有什么相似之处呢?

  1. 他们都有参数列表。

  2. 它们都有代码块,当这个块被直接调用(方法)或者通过new (构造函数)调用时,它们将被执行。

至于具有相同可见性修饰符的构造函数和方法…字段和方法具有更多的可见性修饰符。

  1. 构造函数可以是: 私有的受保护的公共的

  2. 方法可能是: privateprotectedpublicabstractstaticfinalsynchronizednativestrictfp

  3. 数据字段可能是: privateprotectedpublicstaticfinaltransientvolatile

结论是

在Java中,构造函数的forms和function与方法明显不同。 因此,称它们为专门的方法实际上使新程序员难以了解差异。 它们比类似的东西要多得多,因为不同的实体在Java中是至关重要的。

我认识到,Java在这方面与其他语言不同,即C ++,其中专用方法的概念源自语言规则并受其支持。 但是,在Java中,构造函数根本不是方法,更不用说专门的方法。

甚至javadoc认识到构造方法和方法之间的差异超过了相似之处; 并为构造函数提供了一个单独的部分。

构造函数是一种特殊的方法,可以让你创build一个新的类实例。 它涉及初始化逻辑。

在Java中,你写的类是对象。 构造函数构造这些对象。 例如,如果我有一个像这样的Apple.class

 public class Apple { //instance variables String type; // macintosh, green, red, ... /** * This is the default constructor that gets called when you use * Apple a = new Apple(); which creates an Apple object named a. */ public Apple() { // in here you initialize instance variables, and sometimes but rarely // do other functionality (at least with basic objects) this.type = "macintosh"; // the 'this' keyword refers to 'this' object. so this.type refers to Apple's 'type' instance variable. } /** * this is another constructor with a parameter. You can have more than one * constructor as long as they have different parameters. It creates an Apple * object when called using Apple a = new Apple("someAppleType"); */ public Apple(String t) { // when the constructor is called (ie new Apple() ) this code is executed this.type = t; } /** * methods in a class are functions. They are whatever functionality needed * for the object */ public String someAppleRelatedMethod(){ return "hello, Apple class!"; } public static void main(String[] args) { // construct an apple Apple a = new Apple("green"); // 'a' is now an Apple object and has all the methods and // variables of the Apple class. // To use a method from 'a': String temp = a.someAppleRelatedMethod(); System.out.println(temp); System.out.println("a's type is " + a.type); } } 

希望我在代码的注释中解释了所有的东西,但这里有一个总结:构造器构造了类的一个对象。 构造函数必须和类一样命名。 它们主要用于初始化实例varibales方法是对象的function。

一个“方法”是一个“子程序”是一个“程序”是一个“function”是一个“子程序”是一个… …相同的概念下有许多不同的名称,但基本上是一个命名段的代码,你可以“调用“一些其他的代码。 一般来说,代码是以某种方式整齐地打包的,带有某种types的“标题”,其名称和参数以及由BEGINEND{}或其他类似的BEGIN的“body”。

“constrructor”是一种特殊的方法,其目的是初始化一个类或一个结构的实例。

在Java中,一个方法的头部是<qualifiers> <return type> <method name> ( <parameter type 1> <parameter name 1>, <parameter type 2> <parameter name 2>, ...) <exceptions>正文由{}括起来。

你可以从其他方法中指定一个构造函数,因为构造函数具有<method name>的类名称,并且没有声明<return type>

(在Java中,当然,你用new操作符 – new <class name> ( <parameter list> )创build一个新的类实例。)

差异r

  1. 构造函数的名称必须与类相同,但方法可以由任何名称创build。
  2. 构造函数不是由子类自动inheritance,而是从子类inheritance方法,除非它们受private关键字保护。
  3. 构造函数r调用方法时显式调用。
  4. 方法有构造函数没有任何返回types。

构造函数是用来初始化数据成员的特殊函数,其中方法是执行特定任务的函数。

构造函数名称与类名称相同,方法名称可以是也可以不是,也可以是类名称。

构造函数不允许任何返回types,其中方法允许返回types。


构造函数通常是Method

当我们创build一个类的new操作符的对象时,我们调用了一种特殊的方法,称为构造函数。

构造函数用于执行实例variables的初始化。

码:

 public class Diff{ public Diff() { //same as class name so constructor String A = "Local variable A in Constructor:"; System.out.println(A+ "Contructor Print me"); } public void Print(){ String B = "Local variable B in Method"; System.out.println(B+ "Method print me"); } public static void main(String args[]){ Diff ob = new Diff(); } } 

`

  • 输出:

    构造函数中的局部variablesA:构造函数打印我

所以,这里只显示Constructor方法的Diff()语句,因为我们创build了Diff类对象。 在这种情况下,构造函数总是先来实例化这里class Diff()。

通常情况下,

构造函数是build立function。

一切从这里开始,当我们在main方法中调用ob对象的时候,构造函数会接受这个类并创build副本,并将其加载到“Java虚拟机类加载器”中。

这个类加载器将这个副本加载到内存中,所以我们现在可以通过引用来使用它。

构造函数完成它的工作,然后方法来完成它的真正的实现。

在这个程序中,当我们打电话

 ob.print(); 

那么方法就会到来。

谢谢

阿瑞丹姆