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

posted @ 2020-05-05 23:33  张京墨  阅读(6922)  评论(0编辑  收藏  举报