类的成员变量

Java中的构造函数里面的参数一定是类的成员变量吗?为什么?

不一定,如果你的目的不是在构造对象时初始化成员变量,完全不需要传入参数。
CarieVinne 2023-06-13 07:11:401

java中,匿名内部类可以使用外部类的成员变量吗

Java内部类分四种:成员内部类、局部内部类、静态内部类和匿名内部类。1、成员内部类:即作为外部类的一个成员存在,与外部类的属性、方法并列。注意:成员内部类中不能定义静态变量,但可以访问外部类的所有成员。publicclassOuter{privatestaticinti=1;privateintj=10;privateintk=20;publicstaticvoidouter_f1(){//domoresomething}publicvoidout_f2(){//domoresomething}//成员内部类classInner{//staticintinner_i=100;//内部类中不允许定义静态变量intj=100;//内部类中外部类的实例变量可以共存intinner_i=1;voidinner_f1(){System.out.println(i);//外部类的变量如果和内部类的变量没有同名的,则可以直接用变量名访问外部类的变量System.out.println(j);//在内部类中访问内部类自己的变量直接用变量名System.out.println(this.j);//也可以在内部类中用"this.变量名"来访问内部类变量//访问外部类中与内部类同名的实例变量可用"外部类名.this.变量名"。System.out.println(k);//外部类的变量如果和内部类的变量没有同名的,则可以直接用变量名访问外部类的变量outer_f1();outer_f2();}}//外部类的非静态方法访问成员内部类publicvoidouter_f3(){Innerinner=newInner();inner.inner_f1();}//外部类的静态方法访问成员内部类,与在外部类外部访问成员内部类一样publicstaticvoidouter_f4(){//step1建立外部类对象Outerout=newOuter();//***step2根据外部类对象建立内部类对象***Innerinner=out.newInner();//step3访问内部类的方法inner.inner_f1();}publicstaticvoidmain(String[]args){outer_f4();}}成员内部类的优点:⑴内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为PRIVATE,但是对于处于其内部的内部类还是可见的。)⑵用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。2、局部内部类:即在方法中定义的内部类,与局部变量类似,在局部内部类前不加修饰符public或private,其范围为定义它的代码块。注意:局部内部类中不可定义静态变量,可以访问外部类的局部变量(即方法内的变量),但是变量必须是final的。publicclassOuter{privateints=100;privateintout_i=1;publicvoidf(finalintk){finalints=200;inti=1;finalintj=10;classInner{//定义在方法内部ints=300;//可以定义与外部类同名的变量//staticintm=20;//不可以定义静态变量Inner(intk){inner_f(k);}intinner_i=100;voidinner_f(intk){System.out.println(out_i);//如果内部类没有与外部类同名的变量,在内部类中可以直接访问外部类的实例变量System.out.println(k);//*****可以访问外部类的局部变量(即方法内的变量),但是变量必须是final的*****//System.out.println(i);System.out.println(s);//如果内部类中有与外部类同名的变量,直接用变量名访问的是内部类的变量System.out.println(this.s);//用"this.变量名"访问的也是内部类变量System.out.println(Outer.this.s);//用外部"外部类类名.this.变量名"访问的是外部类变量}}newInner(k);}publicstaticvoidmain(String[]args){//访问局部内部类必须先有外部类对象Outerout=newOuter();out.f(3);}}注意:在类外不可直接生成局部内部类(保证局部内部类对外是不可见的)。要想使用局部内部类时需要生成对象,对象调用方法,在方法中才能调用其局部内部类。通过内部类和接口达到一个强制的弱耦合,用局部内部类来实现接口,并在方法中返回接口类型,使局部内部类不可见,屏蔽实现类的可见性。3、静态内部类:静态内部类定义在类中,任何方法外,用static定义。注意:静态内部类中可以定义静态或者非静态的成员publicclassOuter{privatestaticinti=1;privateintj=10;publicstaticvoidouter_f1(){}publicvoidouter_f2(){}//静态内部类可以用public,protected,private修饰//静态内部类中可以定义静态或者非静态的成员staticclassInner{staticintinner_i=100;intinner_j=200;staticvoidinner_f1(){System.out.println("Outer.i"+i);//静态内部类只能访问外部类的静态成员outer_f1();//包括静态变量和静态方法}voidinner_f2(){//System.out.println("Outer.i"+j);//静态内部类不能访问外部类的非静态成员//outer_f2();//包括非静态变量和非静态方法}}publicvoidouter_f3(){//外部类访问内部类的静态成员:内部类.静态成员System.out.println(Inner.inner_i);Inner.inner_f1();//外部类访问内部类的非静态成员:实例化内部类即可Innerinner=newInner();inner.inner_f2();}publicstaticvoidmain(String[]args){newOuter().outer_f3();}}注意:*******生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Innerin=newOuter.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。静态内部类不可用private来进行定义。*******例子:对于两个类,拥有相同的方法:classPeople{run();}classMachine{run();}此时有一个robot类:classRobotextendsPeopleimplementMachine.此时run()不可直接实现。注意:当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现。用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承。4、匿名内部类匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。IA被定义为接口。IAI=newIA(){};匿名内部类的特点:1,一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先或是覆盖。2,只是为了获得一个对象实例,不需要知道其实际类型。3,类名没有意义,也就是不需要使用到。publicclassOuter{privatestaticinti=1;privateintj=10;publicstaticvoidouter_f1(){}publicvoidouter_f2(){}//静态内部类可以用public,protected,private修饰//静态内部类中可以定义静态或者非静态的成员staticclassInner{staticintinner_i=100;intinner_j=200;staticvoidinner_f1(){System.out.println("Outer.i"+i);//静态内部类只能访问外部类的静态成员outer_f1();//包括静态变量和静态方法}voidinner_f2(){//System.out.println("Outer.i"+j);//静态内部类不能访问外部类的非静态成员//outer_f2();//包括非静态变量和非静态方法}}publicvoidouter_f3(){//外部类访问内部类的静态成员:内部类.静态成员System.out.println(Inner.inner_i);Inner.inner_f1();//外部类访问内部类的非静态成员:实例化内部类即可Innerinner=newInner();inner.inner_f2();}publicstaticvoidmain(String[]args){newOuter().outer_f3();}}注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。因他是局部内部类,那么局部内部类的所有限制都对其生效。匿名内部类是唯一一种无构造方法类。大部分匿名内部类是用于接口回调用的。匿名内部类在编译的时候由系统自动起名Out$1.class。如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。因匿名内部类无构造方法,所以其使用范围非常的有限。当需要多个对象时使用局部内部类,因此局部内部类的应用相对比较多。匿名内部类中不能定义构造方法。如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。________________________________________________________________________________内部类总结:1.首先,把内部类作为外部类的一个特殊的成员来看待,因此它有类成员的封闭等级:private,protected,默认(friendly),public它有类成员的修饰符:static,final,abstract2.非静态内部类nestedinnerclass,内部类隐含有一个外部类的指针this,因此,它可以访问外部类的一切资源(当然包括private)外部类访问内部类的成员,先要取得内部类的对象,并且取决于内部类成员的封装等级。非静态内部类不能包含任何static成员.3.静态内部类:staticinnerclass,不再包含外部类的this指针,并且在外部类装载时初始化.静态内部类能包含static或非static成员.静态内部类只能访问外部类static成员.外部类访问静态内部类的成员,循一般类法规。对于static成员,用类名.成员即可访问,对于非static成员,只能用对象.成员进行访问4.对于方法中的内部类或块中内部类只能访问块中或方法中的final变量。类成员有两种static,non-static,同样内部类也有这两种non-static内部类的实例,必须在外部类的方法中创建或通过外部类的实例来创建(OuterClassInstanceName.newinnerClassName(ConstructorParameter)),并且可直接访问外部类的信息,外部类对象可通过OuterClassName.this来引用static内部类的实例,直接创建即可,没有对外部类实例的引用。内部类不管static还是non-static都有对外部类的引用non-static内部类不允许有static成员方法中的内部类只允许访问方法中的final局部变量和方法的final参数列表,所以说方法中的内部类和内部类没什麽区别。但方法中的内部类不能在方法以外访问,方法中不可以有static内部类匿名内部类如果继承自接口,必须实现指定接口的方法,且无参数匿名内部类如果继承自类,参数必须按父类的构造函数的参数传递
拌三丝2023-06-13 07:11:311

C++的基类如何访问其派生类的成员变量?

不能访问吧
gitcloud2023-06-13 07:11:319

为什么在C++中类的成员变量不能在定义时初始化

成员变量是属于特定的对象的变量,你在定义类的时候只是说明此类对象应该具有哪些数据结构,不同的对象的属性不一定完全相同吧?还有,在定义静态的变量的时候是可以赋初值的,因为它是属于整个类的,为整个类的对象所使用
meira2023-06-12 06:43:414

类的成员变量与类中函数的变量有什么区别

那要看你的控件变量是什么什么类型,按照你说的情况,你的控件变量本身就是一个成员对象,那就可以用对应的类成员。
NerveM 2023-06-12 06:43:381

c++中类的成员变量不定义是public还是private型默认是什么?

类定义里面的成员变量和函数默认都是private型类本身默认为public型全局成员默认也都是public型
拌三丝2023-06-12 06:43:321

JAVA同类中的方法可以调用本类的成员变量吗?

可以,任何属性的
CarieVinne 2023-06-10 08:35:524

C++怎么在别的类里修改其他类的成员变量

这个时候,需要其它类提供修改成员变量的接口:提供方法函数,或把成员变量修改为public或把该类做为友元类添加到修改内中(不推荐,破坏封装性)
大鱼炖火锅2023-06-10 08:35:521

java类的成员变量和局部变量怎么区别啊?局部变量是写在main方法里的吗??

成员变量在类中方法外,局部变量在方法中,不区分是main方法或者其他方法
北境漫步2023-06-10 08:35:431

java如何访问类的成员变量和方法?

成员变量和方法分为静态和实例变量和方法x0dx0a例如定义一个类:x0dx0aclass Textx0dx0a{x0dx0a public static int number;x0dx0a public int temp;x0dx0a public static void method(){}x0dx0apublic void method2(){}x0dx0a}x0dx0a如果你想访问temp属性,你就必须先创建一个Text的对象,才能访问:Text b = new Text();x0dx0ab.temp;这就是实例成员变量。实例变量也是一样x0dx0a而你想 访问number的话,不用创建Text的实例就可以访问,就像这样:Text.number.这就是类成员变量。实例方法也是一样x0dx0a主要区别就是访问是需不需要创建对象,而对于类成员变量,所有对象是共享一个变量的。
凡尘2023-06-10 08:35:411

Java中定义类的成员变量数据类型为类名什么意思?

举个简单例子,比如建一个类User 则类名为User,同样如果用User user=new User();则user的数据类型也是User
Ntou1232023-06-10 08:35:402

如何在自定义函数中使用类的成员变量

类的成员变量只能通过该类声明的对象进行引用;因为类的成员变量在没有对象时,是不存在的抽象的一个数据;比如,我声明一个骆驼的类, 如果我要引用这个骆驼的体重,那只能先定义一个实际存在的骆驼,才可以得到体重这个数据;如果并不存在这个骆驼实体,那体重是没办法确定的;
凡尘2023-06-10 08:35:381

java语言中,类的成员变量分配在哪个内存区?

变量在栈...实例在堆。。
大鱼炖火锅2023-06-10 08:35:374

JAVA中该类的对象是不是在共享同一个成员变量也就是类的成员变量

当然可以,用static修饰,也就是我们平时所说的类变量
苏萦2023-06-10 08:19:593

java重写能重写父类的成员变量吗?

重写和重载是针对方法的子类的变量可以覆盖父类的变量,但是不能改变父类的变量
余辉2023-06-08 07:59:101

何种情况下,子类中需要初始化基类的成员变量?

derived类中的成员变量i和base类中的成员变更i不是同一个变量,如果去掉,base类中的成员变更i就不能初始化了。而且,base类也没有默认的构造函数base()。
余辉2023-06-08 07:59:073

java中子类能覆盖父类的成员变量吗

可以的;子类和父类不冲突
此后故乡只2023-06-08 07:58:492

c++:如何才能在静态函数中使用类的成员变量,//或者有没有办法在启动线程的时候使用类的成员函数?

//如何才能在类中的静态函数中使用类的成员变量 可以通过给静态函数加参数来实现,比如static void loop(test * argslist );{ argslist->a=10; argslist->a=b;}在类外可这样实现test a;test::loop(&test);//或者有没有办法在启动线程的时候使用类的成员函数? 将类的成员函数声明成tatic DWORD WINAPI StartThread()就可以调用了,注意beginthread这个函数中的一个参数,通过它可以将你类中的一些信息传到线程中.
大鱼炖火锅2023-06-08 07:30:152

一个类的静态函数怎么调用这个类的成员变量,有方法吗

原因如下;  和静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分。如果要在类外调用公用的静态成员函数,要用类名和域运算符“∷”。  如 Box∷volume( ); 实际上也允许通过对象名调用静态成员函数,如 a.volume( ); 但这并不意味着此函数是属于对象a的,而只是用a的类型而已。 静态成员函数的作用是为了能处理静态数据成员。 可以说,静态成员函数与非静态成员函数的根本区别是:非静态成员函数有this指针,静态成员函数并不属于某一对象,它与任何对象都无关,静态成员函数没有this指针。  由此决定了静态成员函数不能访问本类中的非静态成员。 在C++程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。假如在一个静态成员函数中有以下语句: cout<<height<<endl; //若height已声明为static,则引用本类中的静态成员,合法 cout<<width<<endl; //若width是非静态数据成员,不合法。但是,并不是绝对不能引用本类中的非静态成员,只是不能进行默认访问,因为无法知道应该去找哪个对象。如果一定要引用本类的非静态成员,应该加对象名和成员运算符“.”。如 cout<<a.width<<endl; //引用本类对象a中的非静态成员
Ntou1232023-06-08 07:30:141

怎样将一个类的成员变量声明为静态全局变量?

让b 继承 a 就可以了
LuckySXyd2023-06-08 07:27:193

怎么理解java类中的成员变量可以定义另一类对象作为本类的成员变量?

Class A{}Class B{A a; //另一个类A的对象a作为B类的成员变量public B(){a=new A();}}
mlhxueli 2023-06-06 08:00:241

Java如何在一个类中引用另一个类的成员变量和方法

把那个类的成员变量和方法设为public或静态
meira2023-06-06 08:00:244

类的成员变量能是数组的元素吗?

成员变量会自动初始化,数组名也是一个引用,所以初始化值是null,如果你要初始化数组里面的元素的话int [] a = {1,2,2,3,3}这样就可以静态的初始化
左迁2023-06-06 08:00:231

java中类的成员变量默认是哪种类型的啊

默认---同包内可访问a类的子类继承了这个变量,子类的实例中包含父类的实例所以是可以访问的
CarieVinne 2023-06-06 08:00:221

高分求救:JAVA中类的成员变量和对象的成员变量有什么区别

类的成员变量被static修饰,为所有对象共享占用一块空间;对象的成员变量为每个对象有一份,有多少个对象就有占多少内存空间。
FinCloud2023-06-06 08:00:221

一个类怎样引用另外一个类的成员变量或方法

主要是先实例化类,即创建对象,用对象调用其变量和方法.对于内部类,外部类引用她时必须给出完整的名称.JAVA将内部类作为外部类的一个成员,就如同成员变量和成员方法一样,在外部类中通过一个内部类的对象引用内部类的成员,反之内部类中可以直接引用它的外部类的成员,包括静态成员,实类成员和私有成员.
余辉2023-06-06 08:00:223

c++里类的成员变量是public有什么坏处?

调用者可以随意修改对象中成员变量的值,破坏了封装性,造成耦合度上升、函数运算结果不正确等。
善士六合2023-06-06 08:00:211

简单问题,C++类的成员变量默认什么属性

类定义里面的成员变量和函数默认都是private型 类本身默认为public型 全局成员默认也都是public型
余辉2023-06-06 08:00:201

如何在一个类中访问其他类的成员变量

设置友元
康康map2023-06-06 08:00:206

C++ 类的成员变量能在成员函数中赋值吗?

另外可以 类的成员函数可以访问这个类的所有成员
北境漫步2023-06-06 08:00:202

java类的成员变量可以直接赋值啊?

可以
豆豆staR2023-06-06 08:00:199

Java中类的成员变量可以是"类"类型吗?举个例子可否?

弟子规大概意思是什么
kikcik2023-06-06 08:00:182

java如何访问类的成员变量和方法?

通过set和get方法
西柚不是西游2023-06-06 08:00:184

java中类的成员变量能继承吗

子类继承父类之后,可以继承父类的public和protected类型的成员变量。
meira2023-06-06 08:00:151

java如何访问类的成员变量和方法?

如果变量和方法是静态的就直接类名.变量名或类名.方法名非静态的话,本类中访问直接this.变量名或者this.方法名,外部其它类如果要调用的话就需要先创造出该类然后再.变量名或.方法名
肖振2023-06-06 08:00:152

类的成员变量和类名是同一种类型,怎么解释

类变量属于成员变量java的类中有两种成员变量 一种就是类变量或静态变量 这类变量前面加油static关键字修饰这类变量一旦赋值它的值就在你new出来的任何一个实例中具有相同的值另一种叫做实例变量 前面不加static关键字修饰,每一个new出来的新实例都可以对他赋予自己需要的值例子class example{static int a = 0;int b = 1;}a是类变量,b是实例变量example e1 = new exzample();example e2 = new exzample();改变e1中a的值会使e2中的a值也改变而e1中b值的变化不会带来e2中a值的变化
九万里风9 2023-06-06 08:00:131