1. java中創建一個對象有哪幾種方法,有什麼區別
以String類為例
第一種:
String
str
=
new
String();
第二種:
String
str
=
Class.forName(String).newInstance()
兩種方法創建的對象實體沒有任何區別,如果硬說有區別的話,那就是第一種直接調用了本類的構造函數,如果本類有多個構造函數重載的話,可以添加參數。而第二種是調用這個類的默認構造函數,即不帶任何參數的。
第一種方法是最常用,最普遍的用法。
第二種方法叫做工廠模式,是一種較安全的方法。
2. java如何創建一個類的對象
Java創建一個類的對象通過new關鍵字創建:
語法如下:
類 對象 = new 類構造方法();
實例:
public class Person{
String name;
char sex;
int age;
public static void main(String[] args){
//在main方法完成Person類的對象person創建
Person person1 = new Person();
}
}
你明白了嗎?
3. JAVA鍒涘緩瀵硅薄鏈夊摢鍑犵嶆柟寮忥紵
Java涓鍒涘緩瀵硅薄鐨勫洓縐嶆柟娉 鏀惰棌Java涓鍒涘緩瀵硅薄鐨勫洓縐嶆柟寮
1.鐢╪ew璇鍙ュ壋寤哄硅薄錛岃繖鏄鏈甯歌佺殑鍒涘緩瀵硅薄鐨勬柟娉曘
2.榪愮敤鍙嶅皠鎵嬫,璋冪敤java.lang.Class鎴栬卝ava.lang.reflect.Constructor綾葷殑newInstance()瀹炰緥鏂規硶銆
3.璋冪敤瀵硅薄鐨刢lone()鏂規硶銆
4.榪愮敤鍙嶅簭鍒楀寲鎵嬫碉紝璋冪敤java.io.ObjectInputStream瀵硅薄鐨 readObject()鏂規硶銆
絎涓縐嶆渶甯歌
4. java面向對象如何創建對象
java作為互聯網編程中使用范圍最廣泛的編程語言之一,我們有許多的知識是需要掌握學習的,今天java課程培訓機構http://www.kmbdqn.cn/就給大家分析講解一下java面向對象的編程方法有哪些。
常用的創建對象的模式有以下幾種:
一.工廠模式
工廠模式抽象了具體對象的過程,用函數來封裝以特ing介面創建對象的細節。
如下:
functioncreateAnimal(name,age){
varo=newObject();
o.name=name;
o.age=age;
o.sayName=function(){
alert(this.name);
}
returno;
}
varcat=createAnimal("cat",12);
vardog=createAnimal("dog",3);
工廠模式雖然解決了創建多個相似兌現過的問題,但是卻沒有解決對象識別的問題。
二.構造函數模式
構造函數模式可以創建特定類型的對象。
functionAnimal(name,age){
this.name=name;
this.age=age;
this.sayName=function(){
alert(this.name);
}
}
varcat=newAnimal("cat",12);
vardog=newAnimal("dog",3);
可以使用對象的constructor屬性或instanceof操作符來標識對象類型。
cat.constructor==Animal//true
catinstanceofAnimal//true
三.原型模式
每個函數都有一個prototype(原型)屬性。這個屬性是一個指針,指向一個對象,而這個對象的用途是包含可以由特定類型的所有實例共享的屬性和方法。
使用原型對象的好處是,可以讓所有對象實例共享它所包含的屬性和方法。
functionAnimal(){}
Animal.prototype.name="animal";
Animal.prototype.age=1;
Animal.prototype.sayName=function(){
alert(this.name);
}
vartest1=newAnimal();
test1.sayName();//"animal"
vartest2=newAnimal();
test2.sayName();//"animal"
alert(test1.sayName===test2.sayName);//true
或者:
functionAnimal(){}
Animal.prototype={
constructor:Animal,
name:"animal",
age:1,
sayName:function(){
alert(this.name);
}
};
原型中所有屬性是被很多實例共享的,通過在實例上添加一個同名屬性,可以隱藏原型中的對應屬性。但是,對於包含引用類型值的屬性來說,問題就比較明顯了。
5. java中創建對象的的兩種方式具體解釋,一個是new一個是調用Class類的newinstance方法
1、new
使用java的關鍵字new來創建對象實例。構造函數鏈中的所有構造函數都會被自動調用。
Java代碼:
CreateInstanceinstance=newCreateInstance();
2、clone
構造函數不被自動調用。
Java代碼:
{
(){
return(CreateInstance)this.clone();
}
}
如果需要復制上面的那個obj指向的對象實例時,調用new CreateInstance().getInstance()方法就ok了。
JDK中Object# clone()方法的原型是:protected native Object clone() throws CloneNotSupportedException; 方法修飾符是protected,而不是public。
這種訪問的不可見性使得對Object#clone()方法不可見。所以,必需重寫Object的clone方法後才能使用。
Java代碼:
{
publicCreateInstanceclone{
return(CreateInstance)super.clone();
}
}
值得注意的是:如果需要使用clone方法,必需實現java.lang.Cloneable介面,否則會拋出java.lang.CloneNotSupportedException。
另外clone方法所做的的操作是直接復制欄位的內容,換句話說,這個操作並不管該欄位對應的對象實例內容。
像這樣欄位對欄位的拷貝(field to field )就成為"淺拷貝",clone方法所做的正是"淺拷貝"。
3、newInstance
利用java.lang.Class類的newInstance方法,則可根據Class對象的實例,建立該Class所表示的類的對象實例。
創建CreateInstace類的對象實例可以使用下面的語句(這樣需要一個已經存在的對象實例)。
CreateInstanceinstance=CreateInstance.class.newInstance();
或者使用下面的語句(只需要存在相應的.class文件即可)
CreateInstanceinstance=(CreateInstance)Class.forname("com.create.instance.CreateInstance").newInstance();
如果包下不存在相應.class文件,則會拋出ClassNotFoundException。
注意:newInstance創建對象實例的時候會調用無參的構造函數,所以必需確保類中有無參數的構造函數,否則將會拋出java.lang.InstantiationException異常。
無法進行實例化。