java基礎知識:私有成員變量


一:private 保護類中的變量

Person類

package 類;

public class Person {
    String name;
//    使用private修飾的變量,只能本類中訪問,導包導入后,不能使用 類似於python里面的 _age = 10
    private int age;
    public void call(){
        System.out.println("我叫:"+name + ",年齡:"+age);
    }
//    為了讓外部能夠訪問到age這個屬性,需要使用特定的方法,python里面也有
//    set是設置,通過暴露這個方法讓外部來設置私有變量
    public void setAge (int num){
        age = num;
    }
    public void setName(String flag){
        name = flag;
    }
//    get是獲取,通過暴露着這個方法讓外部來獲取私有變量
    public String getName(String flag){
        name = flag;
        return name;
    }

}

 

外部訪問Person類

package 類;

public class Demo_Person {
    public static void main(String[] args) {
        Person people = new Person();
//        age是private,外部不能導入
//        System.out.println(people.age);
//        類中設置專門的方法來改變age
        people.setAge(20);
        people.setName("王小二");
        people.call();
//        類中有專門的方法來間接訪問類屬性
        String name = people.getName("劉德華");
        System.out.println(name);
    }

}

 

private是訪問控制修飾符,用來使用訪問控制符來保護對類、變量、方法和構造方法的訪問。不能直接訪問,但是通過方法可以間接訪問類中的變量

python里面是通過__age,兩個下划線來定義私有變量的,外界也是無法訪問

Person.py

class PersonDemo():
    __age = 10
    __name = "張學友"

 

Use_Person.py

from python知識點 import Person

p = Person.PersonDemo()
print(p.__age)
print(p.__name)

# 結果
Traceback (most recent call last):
  File "F:/pycharm測試功能文件夾/python知識點/Use_Person.py", line 4, in <module>
    print(p.__age)
AttributeError: 'PersonDemo' object has no attribute '__age'

 

如果外界要訪問和修改,必須通過類中的set__age和set__name/get__age和get__name

Person.py

class PersonDemo():
    __age = 10
    __name = "張學友"

    def get__age(self):
        return self.__age

    def get__name(self):
        return self.__name


    def set__age(self,num):
        self.__age = num


    def set__name(self,nick):
        self.__name = nick

 

 Use_Person.py

from python知識點 import Person

p = Person.PersonDemo()
print(p.get__age())
print(p.get__name())
p.set__age(20)
p.set__name("劉德華")
print(p.get__age())
print(p.get__name())

# 結果
10
張學友
20
劉德華

 

 

 

 

 

 

 

# TODO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM