Ⅰ java 怎么让几个类共用同一个对象
B作为父类,
C,D,E继承B,同时,将A test声明为静态专的。属。
class B {
protected final static A test;
static {
test = =new A();
}
}
Ⅱ java中如何理解多个对象共享同一个静态成员变量
要理解这个问题首先要知道一点,就是java的静态成员变量是有一个独立的存储空间的。
假设一个类里面如果有一个静态变量s,那个这个类的多个实例所引用的s实际上是同一个。举个例子吧
classA{
staticintnum=1;
privateStringname
publicStringgetName(Stringname){
returnname;
}
publicvoidsetName(Stringname){
{
this.name=name;
}
publicvoidshow(){
System.out.println("name:"+name+"num:"+num);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Aa=newA();
a.setName("caseA");
a.num++;
Ab=newA();
b.setName("caseB);
a.show();
b.show();
}
}
可以看到输出的num的值都是2
Ⅲ JAVA中该类的对象是不是在共享同一个成员变量也就是类的成员变量
是,Static类型的类成员变量都被这个类的对象共享
类的成员变量被static修饰,为所有对象共享占用一块版空间;权
对象的成员变量为每个对象有一份,有多少个对象就有占多少内存空间。
不明白的再找我。这里不是一句两句就能说明白的。
不是!
private run;
这是类的属性并且你定义的还缺少一个返回值。
你看一下以下的代码:
class b{
public b(){
}
public static int i=0;//类成员变量定义
private static int j=1;
protected static int k=2;
public int m=3;//类的属性的定义
}
public class a{
public a(){
}
public static void main(String[] s){
b B=new b();
System.out.println(b.i);//类成员变量的使用
System.out.println(b.k);
System.out.println(B.m);//类的属性
}
}
Ⅳ java中多线程怎么实现数组对象的共享
例如:一个线程正准备往进去写数据,突然切到另一个线程它先写了进入,在切回来这个线程并不知道这个位置已经写入了数据,所以它还是会傻傻的写入数据,这样另一个线程的数据就被覆盖了。如果是一边添加 ,一边遍历的话程序会产生异常。
所以要用onwritearraylist是最好的选择,但是注意的是,添加元素时它的性能不是很好 。
Ⅳ 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);
}
};
原型中所有属性是被很多实例共享的,通过在实例上添加一个同名属性,可以隐藏原型中的对应属性。但是,对于包含引用类型值的属性来说,问题就比较明显了。
Ⅵ java中同一个方法可以被几个类或者被几个对象共享
让某个对象只能存在一个 这样就可以使用多个类 对这一个对象进行操作了。专
如何实现某个对象属只存在一个呢? (使用我们的工厂模式,一种编程思想)
具体实现方式:
final public class MySessionFactory {//该类不能被继承
private static SessionFactory sessionFactory =null;
private MySessionFactory(){}//让该类不能被外部实例化
static{//静态块优先执行
sessionFactory=new Configuration().configure().buildSessionFactory();//一个得到对象
}
public static SessionFactory getSessionFactory(){
return sessionFactory;//返回该对象
}
}