1. 類的非靜態成員函數能訪問或修改靜態成員變數嗎並且類的友元類中的函數能訪問或修改靜態成員變數嗎
靜態成員變數是所有該類的對象共有的。無論是非靜態成員函數和靜態成員函數都能夠調用,並且修改。
友元類擁有最高許可權,可以訪問靜態成員變數
2. 共有成員函數能調用該類的靜態成員函數嗎
可以,一般的話靜態
成員函數
裡面只能使用類裡面的
靜態變數
可以使用類名直接訪問
在函數內調用和其他成員函數沒什麼區別
3. JAVA 類變數和成員變數怎麼理解
成員變數就是類中的屬性。當new對象的時候,每個對象都有一份屬性。一個對象中的屬性就是成員變數。在類內部,任何地方都可以訪問成員變數。類變數是被static修飾的屬性。作用范圍在類變數定義之後。
class Person{
//成員變數,實例變數
String name;
//靜態變數,類變數,所有對象共享的屬性用static修飾
static String country = "CN";
public void show(){
System. out.println(country + ":" + name); }}
class StaticDemo{
public static void main(String[]args){
Personp = new Person();
System. out.println(p.country); //可以用類名直接調用
System. out.println(Person.country); }}
(3)類的成員變數可以訪問類的靜態成員變數擴展閱讀:
成員變數和類變數的區別:
1、兩個變數的生命周期不同
成員變數隨著對象的創建而存在,隨著對象的回收而釋放。
靜態變數隨著類的載入而存在,隨著類的消失而消失。
2、調用方式不同
成員變數只能被對象調用。
靜態變數可以被對象調用,還可以被類名調用。
3、數據存儲位置不同
成員變數存儲在堆內存的對象中,所以也叫對象的特有數據。
靜態變數數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據。
4. 能不能通過類名直接訪問靜態內部類的成員變數
外部類,內部類,匿名類,外部類就是兩個類並列的class A {} class B {},內部類:class A { class B {}},B可以直接使用包涵它的類的成員變數,內部類不能被除包涵類以外的類調用;還有就是匿名類,也是內部類 classA{new {}}省略定義類名直接定義方法和使用,這個適用於代碼比較簡單且這個類不需要被其他類調用。並且,外部類可以訪問內部類的方法以及靜態方法和數據域。
5. Java中靜態內部類的成員可以訪問外部類的靜態變數嗎
可以的,靜態方法只能調用靜態方法,非靜態方法也可以調用靜態方法,例子如下:
package com..stati.pack;
public class staticStri {
public String getNames(){
System.out.println("這是一個非靜態方法");
return null;
}
public static String getNamesList(){
System.out.println("這是一個靜態方法");
return null;
}
public void say(){
getNames();
getNamesList();
}
public static void show(){
getNamesList();
}
}
6. c++中,類的普通成員函數通過this指針訪問普通成員變數,那訪問靜態成員變數時是怎麼實現的
靜態成員變數的位置是確定的,不要對象就可以直接訪問。
比如下面代碼的兩種引用方法是等價的:
classTest{
public:
staticintms_Data;
};
intmain(){
Testt;
std::cout<<t.ms_Data<<std::endl;
std::cout<<Test::ms_Data<<std::endl;
}
7. C++中,如何訪問類的靜態成員!
1.靜態成員函數中不能調用非靜態成員。
2.非靜態成員函數中可以調用靜態成員。因為靜態成員屬於類本身,在類的對象產生之前就已經存在了,所以在非靜態成員函數中是可以調用靜態成員的。
3.靜態成員變數使用前必須先初始化(如int MyClass::m_nNumber = 0;),否則會在linker時出錯。
4.在類的非靜態成員函數中使用類的靜態成員
class Point
{
public:
void init()
{
output();
}
static void output()
{
}
};
void main()
{
Pointpt;
pt.output();
}
5.使用類的靜態成員變數
#include <stdio.h>
class Point
{
public:
Point()
{
m_nPointCount++;
}
~Point()
{
m_nPointCount--;
}
static void output()
{
printf("%d\n", m_nPointCount);
}
private:
static int m_nPointCount;
};
int Point::m_nPointCount = 0;
void main()
{
Pointpt;
pt.output();
}
8. 靜態成員變數(或稱類變數)是通過____來訪問的
可用的訪問方式
1、類名::靜態成員變數,這個是最通用的方式
2、類對象.靜態成員變數
9. jav靜態內部類中靜態成員可以訪問外部類的靜態成員嗎
所有的靜態屬性都沒有外部,內部之分,所以是可以隨便訪問的,你就這樣想吧,靜態的東西,是放到類同一層次的,而非靜態變數則是在類對象中,所以,靜態的東西,是程序一開始載入就存在的,而對象的變數則是要對象初始化成功之後才存在,所以靜態之間可以相互訪問,但成員變數就不行了。。。起碼我一直都是這樣理解的。
10. C++中類里static成員變數與普通的成員變數有什麼不同
C++中「類」的static成員,只有一個實例。也就是所有的類的實例都用同一個變數。如果這個變數是public的,那類的外部能夠直接訪問,方法是類名「變數名」。
代碼中的實例變數、類變數、常量都屬於成員變數,這與變數的修飾符有關系,也就是上面代碼中的private、static、final等修飾符。