Ⅰ java 普通方法和構造方法的區別
構造方法意為構造器,也就是為了程序在內存中構造當前類的對象,並提供相關get,set方法,共修改其屬性,多用於bean對象,而普通方法一般用於處理不同的程序單元,比如一個類中有加、減、乘、除這4個方法,這就是普通方法,只為處理程序邏輯上的功能。
構造方法:
①方法名和 類名相同
②在方法名的前面沒有返回值類型的聲明
③在方法中不能使用return語句返回一個值
④在創建對象時,要調用new,如:book b1=new book();
⑤當沒有指定構造方法時,系統會自動添加無參的構造方法
⑥當有指定構造方法時,無論該構造方法是有參,還是無參,系統都不會再自動添加無參的構造方法
⑦構造方法的重載:方法名相同,但參數不同的多個方法,調用時會自動根據不同的參數選擇相應的方法
普通方法:
①有返回類型
②方法名不能和類型相同
publicclassbean{
privateinta;
privateintb;
publicvoidsetA(inta){
this.a=a;
}
publicintgetA(){
returna;
}
publicvoidsetB(intb){
this.b=b;
}
publicintgetB(){
returnb;
}
publicbean(){}//空的構造方法
publicbean(inta,intb){//帶參構造方法
this.a=a;
this.b=b;
}
}
而構造方法和普通方法都可以被重載,如下:
voidselectForPage(Stringtable,intpageNo){
selectForPage(table,10,pageNo)
}
voidselectForPage(Stringtable,intpageSize,intPageNo){
...
}
Ⅱ java構造方法和方法的區別
你自己寫代碼的時候,不需要考慮構造方法。因為構造方法是類實例化的時候 會自動調用構造方法,構造方法默認的是無參數的,java術語叫無參構造器。你也可以自己寫一個有參的構造器。 類初始化的時候 就可以調用有參的構造方法。一般實際開發中,你類實例化的時候要傳參數,控制的是你的初始化不同。
你自己寫代碼的時候呢,只需要用你new出來的對象,調用你寫的方法就可以。不必關心構造方法。你需要初始化一些類成員變數的時候,可以在構造方法中初始化。實例化的時候會自動調用構造方法進行初始化。
如果你還想了解的更深入,就需要買本書好好看看了。因為構造器還牽連著Java中的很多機制。比如說多態機制,垃圾回收機制等的實現都和構造器有關聯。
區別是
1.構造方法的名字必須與定義他的類名完全相同,沒有返回類型,甚至連void也沒有。
2.構造方法的調用是在創建一個對象時使用new操作進行的。構造方法的作用是初始化對象。
3.每個類可以有零個或多個構造方法.
4.不能被static、final、synchronized、abstract和native修飾。構造方法不能被子類繼承。
5.構造方法在創建對象時自動執行,一般不能顯式地直接調用。
Ⅲ java語言中 方法和構造方法有什麼區別
實例方法、類方法和構造方法的區別
類方法,有static修飾符,典型的主函數
public static void main(String[] args){}
實例方法,就是一般的方法
構造方法,沒有返回值(就是連void都沒有),方法名與類名一樣
public class Test{
public static void myMethod();//類方法
public void myMethod2();//實例方法
public Test(){}//構造方法,沒有返回值,方法名與類名一樣
成員方法和構造方法的區別
構造方法是初始化一個類的對象時候調用的,它沒有返回值,而且名字必須與類的名字一樣,而成員函數是由類對象主動調用的,使用點操作符,它有返回值
構造函數是賦予對象"生命特徵"的,成員方法則是對象所具有的"行為,能力"
構造函數只有在建立對象時由系統調用的,其他任何時候你都別指望用他.
構造方法:構造方法是用來構造類的對象的,方法名和類名相同沒有返回值。一般用 new 構造方法名() 來創建該類的對象。在不寫構造方法的情況下會有一個默認的無參構造方法。
成員方法:簡單地說就是可以通過類的實例(某個對象)調用的方法,也就是我們正常情況下使用的方法。
構造方法:構造方法是用來構造類的對象的,方法名和類名相同沒有返回值。一般用 new 構造方法名() 來創建該類的對象。在不寫構造方法的情況下會有一個默認的無參構造方法,當然你也
可以重寫和重載構造方法(建議你找一本《Java編程思想》看看,裡面講的很透徹)。
實例方法:簡單地說就是可以通過類的實例(某個對象)調用的方法,也就是我們正常情況下使用的方法。實例方法也稱成員方法(成員方法和成員變數的知識你可以參考《Java編程思想》
)。
類方法:簡單地說就是直接可以用類名調用的方法,也就是被關鍵字static修飾的方法,它不需要創建類的對象來調用該方法。(關於static關鍵字的詳細用法你也可以在《Java編程思想》這本
書中找到)。
《Java編程思想》是目前最好的Java參考書,網上有第3版的中文版電子書下的,第4版是英文的
Ⅳ java中構造方法和方法有什麼區別
我不知道怎麼和你解釋,所以在網上找了點資料,希望可以幫助你。
構造方法要與類名相同,無返回類型,在類初始化的時候調用。
方法最好與類名不同,對象調用,靜態方法可用類名.方法().
功能和作用的不同
構造器是為了創建一個類的實例。這個過程也可以在創建一個對象的時候用到:Platypus p1 = new Platypus();
相反,方法的作用是為了執行java代碼。
修飾符,返回值和命名的不同
構造器和方法在下面三個方便的區別:修飾符,返回值,命名。和方法一樣,構造器可以有任何訪問的修飾: public, protected, private或者沒有修飾(通常被package 和 friendly調用). 不同於方法的是,構造器不能有以下非訪問性質的修飾: abstract, final, native, static, 或者 synchronized。
返回類型也是非常重要的。方法能返回任何類型的值或者無返回值(void),構造器沒有返回值,也不需要void。
最後,談談兩者的命名。構造器使用和類相同的名字,而方法則不同。按照習慣,方法通常用小寫字母開始,而構造器通常用大寫字母開始。構造器通常是一個名詞,因為它和類名相同;而方法通常更接近動詞,因為它說明一個操作。
"this"的用法
構造器和方法使用關鍵字this有很大的區別。方法引用this指向正在執行方法的類的實例。靜態方法不能使用this關鍵字,因為靜態方法不屬於類的實例,所以this也就沒有什麼東西去指向。構造器的this指向同一個類中,不同參數列表的另外一個構造器,我們看看下面的代碼:
public class Platypus {
String name;
Platypus(String input) {
name = input;
}
Platypus() {
this("John/Mary Doe");
}
public static void main(String args[]) {
Platypus p1 = new Platypus("digger");
Platypus p2 = new Platypus();
}
}
在上面的代碼中,有2個不同參數列表的構造器。第一個構造器,給類的成員name賦值,第二個構造器,調用第一個構造器,給成員變數name一個初始值 "John/Mary Doe".
在構造器中,如果要使用關鍵字this,那麼,必須放在第一行,如果不這樣,將導致一個編譯錯誤。
"super"的用法
構造器和方法,都用關鍵字super指向超類,但是用的方法不一樣。方法用這個關鍵字去執行被重載的超類中的方法。看下面的例子:
class Mammal {
void getBirthInfo() {
System.out.println("born alive.");
}
}
class Platypus extends Mammal {
void getBirthInfo() {
System.out.println("hatch from eggs");
System.out.print("a mammal normally is ");
super.getBirthInfo();
}
}
在上面的例子中,使用super.getBirthInfo()去調用超類Mammal中被重載的方法。
構造器使用super去調用超類中的構造器。而且這行代碼必須放在第一行,否則編譯將出錯。看下面的例子:
public class SuperClassDemo {
SuperClassDemo() {}
}
class Child extends SuperClassDemo {
Child() {
super();
}
}
在上面這個沒有什麼實際意義的例子中,構造器 Child()包含了 super,它的作用就是將超類中的構造器SuperClassDemo實例化,並加到 Child類中。
編譯器自動加入代碼
編譯器自動加入代碼到構造器,對於這個,java程序員新手可能比較混淆。當我們寫一個沒有構造器的類,編譯的時候,編譯器會自動加上一個不帶參數的構造器,例如:public class Example {}
編譯後將如下代碼:
public class Example {
Example() {}
}
在構造器的第一行,沒有使用super,那麼編譯器也會自動加上,例如:
public class TestConstructors {
TestConstructors() {}
}
編譯器會加上代碼,如下:
public class TestConstructors {
TestConstructors() {
super;
}
}
仔細想一下,就知道下面的代碼
public class Example {}
經過會被編譯器加代碼形如:
public class Example {
Example() {
super;
}
}
繼承
構造器是不能被繼承的。子類可以繼承超類的任何方法。看看下面的代碼:
public class Example {
public void sayHi {
system.out.println("Hi");
}
Example() {}
}
public class SubClass extends Example {
}
類 SubClass 自動繼承了父類中的sayHi方法,但是,父類中的構造器 Example()卻不能被繼承。
總結
主題
構造器
方法
功能
建立一個類的實例
java功能語句
修飾
不能用bstract, final, native, static,
or synchronized
能
返回類型
沒有返回值,沒有void
有返回值,或者void
命名
和類名相同;通常為名詞,大寫開頭
通常代表一個動詞的意思,小寫開頭
this
指向同一個類中另外一個構造器,在第一行
指向當前類的一個實例,不能用於靜態方法
super
調用父類的構造器,在第一行
調用父類中一個重載的方法
繼承
構造器不能被繼承
方法可以被繼承
編譯器自動加入一個預設的構造器
自動加入(如果沒有)
不支持
編譯器自動加入一個預設的調用到超類的構造器
自動加入(如果沒有)
不支持
構造方法,可以理解為在對象使用之前必須調用的方法,而該類當中的其他方法則沒這個必要
所以在創建對象的時候,不但要分配內存,還要調用構造方法
細微的差別
構造方法必須沒有返回值,其他方法必須有返回值
構造方法有默認構造方法,而其他方法沒有
java 類當中方法有返回值,並且習慣方法名開頭小寫!
構造方法沒有返回值,而其寫法特殊是
public/private + 類名 +()+{}。是固定的
例如
class A{
private int id;
private String name;
public A(){}
public A(int id,String name){
this.id = id;
this.name = name;
}
}
第一個 public A(){}是預設的構造方法,第二是重載Full的構造方法。
Ⅳ JAVA中構造方法和普通方法的區別是什麼
只有構造方法才能new,用於生成實例對象,分配內存空間等。
普通方法是不能new 的,可以通過對象名來調用。在對象有內存空間後可以處理類成員變數和調用其他的方法。
拿個不算恰當的比喻來說,
構造方法相當於給你開房間,普通方法是進房間後在自己的許可權內隨便玩,設置可以開另外一個房間。沒有房間之前,普通方法無用武之地。