• 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

  • 相关阅读:
    'index.js' does not match the corresponding name on disk: '. ode_modules
    onload()方法只能在body标签中调用吗?怎么调用多个多个方法?
    HTML5新属性在Google浏览器中不能显示的问题
    HTML引入JS、CSS的各种方法
    框架、架构、设计模式的区别
    npm 命令 --save 和 --save-dev 的区别
    软件开发的权限控制和权限验证
    报错:Something is already running on port 8000.
    $stateProvider resovle 无法找到的原因
    git 统计代码量 shell脚本
  • 原文地址:https://www.cnblogs.com/meloncodezhang/p/12833713.html
Copyright © 2020-2023  润新知