zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [Eclipse]GEF入门系列(四、其他功能)
    [Eclipse]GEF入门系列(三、应用实例)
    [Eclipse]GEF入门系列(一、Draw2D)
    打开Win2000的自动补齐功能
    让URLConnection使用代理服务器
    [Eclipse]GEF入门系列(序)
    给表格的单元格增加编辑功能(In place edit)
    设置Eclipse RCP程序的外观和首选项
    利用winrar自动备份重要资料(续,经验技巧)
    终于换了新电脑
  • 原文地址:https://www.cnblogs.com/meloncodezhang/p/12833713.html
Copyright © 2011-2022 走看看