java,方法的unity脚本间调用变量和变量的访问,unity脚本间调用变量和访问是什么意思,能不能说的通俗点啊?

Java问题:为什么类方法中不能访问普通成员变量而只能访问类变量??
Java问题:为什么类方法中不能访问普通成员变量而只能访问类变量??
普通成员方法可以访问静态变量,而相反的为什么静态方法却不能访问普通成员变量???为什么??
&& 静态的是属于类的, 而动态的是属于对象。
&&& 举个例子:狗都能叫,这就是类的方法。所以是静态的。当是,一个具体的对象,也就是一只具体的狗,也当然能叫啦,这就是动态为什么能调静态。 狗的毛发颜色都不一样吧,如果毛发颜色这个属性是静态的话,那么你要指定毛发颜色的值是什么。你连具体哪只狗都没指定,怎么知道它的毛发颜色呢。
& 所以静态方法里面是不能有动态属性的。
的感言:这个例子让我明白的,谢谢 相关知识
其他回答 (4)
静态的方法是一直存在,而普通的成员方法则,必须通过new Object才能得到。大概明白??他们的不是存在一个地方的,静态方法一直有,所以你可以随时访问,而成员方法是你new了之后才有的,当然就不能通过静态方法访问了
静态方法是类的,他放在一个公有的存储空间,它属于类里面所有对象共享,故只要用类点方法就可以!它的生命周期是一直存在,而一个普通的变量的生命周期在定义它的方法中,
java有垃圾回收器,说当一个变量无法达到它所指的方法时,系统将会把它清理,试想,如果它能访问静态的,因为这个方法永远存在,所以变量永远指的到,所以就不被回收,
时间长了,对内存是很大的负担
普通的变量的生命周期在定义它的方法中
我说的是成员变量,就像这样
public class Anna1 {
&/**& * @param args& */&public static void main(String[] args) {&&Anna1_1 a1=new Anna1_1(20,"Hey",1000);&&Anna1_1 a2=new Anna1_1(22,"Jay",1200);&&&&System.out.println(Anna1_1.getTotalFee());&&//System.out.println(a2.getTotalFee());
}class Anna1_1{&&S&&&&public Anna1_1(int age,String name,int fee)&{&&this.age=&&this.name=&&totalfee+=&}&&public static int getTotalFee()&{&&&&}}
在这个getTotalFee()静态方法里是不能操作成员变量的,比如我想在这个静态方法里执行一个age++;
是不行的,这是为什么呢?
你学过C++或C吗?指针应该有所了解,java为了安全把指针隐长了,有系统自动调用指针,所有的方法想调用成员变量需提供它的this指针,但是静态方法属于类的不属于对象的,所以它没有this指针,因此无法调用私有的成员变量!
实例化的对象是可以调用静态方法的,静态方法不应该是公共的每个对象都可以调用的吗?
你能不能帮我解释一下上面这个程序的每一步执行步骤?
程序我想你看的懂,最后的静态函数调用的是静态成员,因为不能调非静态的,上面说过了,而静态成员通过构造方法实现了++从而达到了目的
我看的懂但是不知道执行步骤啊,你帮我解释一下上面这个程序的每一步执行步骤?
在主函数里面,用类调用它的静态函数,静态函数返回它的静态成员,静态成员通过构造函数实现自加一
这个问题很简单啊
例如类有一个成员变量a
这个类可以实例化很多对象
每个对象都有自己独立的a空间
通过静态方法去访问a的空间
它怎么知道要访问那个对象的a
一个成员a总不能指向内存中所有这个类对象的a吧
public class Anna1 {
&/**& * @param args& */&public static void main(String[] args) {&&Anna1_1 a1=new Anna1_1(20,"Hey",1000);&&Anna1_1 a2=new Anna1_1(22,"Jay",1200);&&&&System.out.println(Anna1_1.getTotalFee());&&//System.out.println(a2.getTotalFee());
}class Anna1_1{&&S&&&&public Anna1_1(int age,String name,int fee)&{&&this.age=&&this.name=&&totalfee+=&}&&public static int getTotalFee()&{&&&&}}
在这个getTotalFee()静态方法里是不能操作成员变量的,比如我想在这个静态方法里执行一个age++;
是不行的,这是为什么呢?
每个对象都有自己的age成员
静态方法不属于任何对象
你说它要修改哪个对象的age?
首先,你所说的隐藏变量应该是私有成员变量,在Java中,子类不继承父类的私有成员变量,super常用语访问父类中被子类覆盖的那些方法或属性。你可以查看private修饰符作用范围,它只在本类可见,即使子类也不可访问。Java是面向对象的,具有封装性,试想一个声明为private的变量仍然可以被外界访问,那私有又有何用。如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快!
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号java中一个类想调用另一个类的变量,必须到方法里面吗,直接在类里面能不能调用?_百度知道
java中一个类想调用另一个类的变量,必须到方法里面吗,直接在类里面能不能调用?
提问者采纳
就要在Int这个类中实现getName()方法
public String getName(){ 调用时就直接Int举个例子,里面有个属性name.name(这个调用时类Int,然后就a,你想取得这个那么可以通过一下几种方法 1 将这个属性定义为public.name(不建议)2
你可以定义一个private的属性} 3 就定义个公有静态的变量public
static String name,直接就new一个对象a,但是要调用时还要调用这个类的变量的,你创建了一个Int类
相关专业回答
原则上来说,如果两个类没有关系,那么必须把变量设为public才可以访问。另外按照安全设置,protected的变量可以被自类访问到。还有一个情况,由于很多人都会忽略设范围。那么把类放在同一个package中,就可以访问变量了。以上的方式都是正统的访问,如果对方设的很规范,而你又特别希望访问。那么可以使用java的反射机制,可以访问私有变量的。
其他类似问题
为您推荐:
其他4条回答
只能a= new A() 然后根据a.getAAA()获得.getXX,那直接 B,而且这个getXX方法必须写过并且最好是public的如果是静态的,或者如果访问非private的变量,直接可以B如果是非静态的
java 不能在类中初始化引用,所以不能直接在类中new一个对象出来,要使用其他类的变量,必须在自己的类的方法中先创建被引用类的实例,通过实例来引用该类的变量,但是,如果被引用的类的变量是静态的,则可以通过如下指令引用:类名.变量
来直接引用这个变量。
看变量是全局变量还是局部变量,如果是全局变量就不用,如果是局部的就得到方法里面
要看 是不是静态 是不是私有
是否提供了 get Set 方法
java的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java中怎样在一个类中访问同一个包中的另一个类定义的变量?_百度知道
java中怎样在一个类中访问同一个包中的另一个类定义的变量?
A类想调用B类中的变量c:给A一个属性,属性类型是B,然后再对B进行封装,用A对象调用B封装后的方法,然后就可以访问c了代码:public&class&B&{private&int&c;public&int&getC()&{return&c;}public&void&setC(int&c)&{this.c&=&c;} }public&class&A&{private&B&b;public&B&getB()&{return&b;//返回B对象,用来拿到B对象中的变量}public&void&setB(B&b)&{this.b&=&b;} public&static&void&main(String[]&args)&{A&a=new&A();a.getB().getC();//得到另一个类的变量} }
其他类似问题
为您推荐:
提问者采纳
可以的,把你说的image类中的变量声明成public的就可以直接访问,不过建议还是写成javabean的形式,用get或set方法进行访问
java的相关知识
其他6条回答
声明成public的。
public class A { static int a = 123; static String sr = &ok&;}class b { int a = wenwen.A.a; String s = wenwen.A.
int b = new A().a;}第一个类的变量用static 修饰第二个类里直接包明.类名.变量 就可以了。
其实你这个问题问的就是java里边变量或者方法的访问权限问题。java中, 有以下几种访问权限:private: 私有, 只有这个类自己才能访问package-private:包私有, 只有和这个类在同一个包中的类才能访问protected:保护, 只有继承于它点类和它自己能访问public:公开, 所有人都能访问。如果你想只能是同一个包的其他类能访问, 那就声明成package-private的吧,也就是前边不加任何东西, 比如:class Foo{
void myFun(){...}//package-private, default
public myFun1(){...}//public}
同一包中?那只要不是private 的变量,都可以通过声明对象来访问啊.举个例子吧.class A{ int num=100;}class B{ A a=new A(); System.out.println(a.num);}
当然可以,在同一个包中只要是声明成public的都可以直接访问调用其中的定义的变量和方法
(1)如果直接访问的话,另一个类中的变量必须为public(2)可以通过一个public的方法去访问
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 多线程访问同一个变量 的文章

 

随机推荐