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异常。
无法进行实例化。