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

  • 相关阅读:
    298. Binary Tree Longest Consecutive Sequence
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    163. Missing Ranges
    336. Palindrome Pairs
    727. Minimum Window Subsequence
    211. Add and Search Word
    年底购物狂欢,移动支付安全不容忽视
    成为程序员前需要做的10件事
    全球首推iOS应用防破解技术!
  • 原文地址:https://www.cnblogs.com/meloncodezhang/p/12833713.html
Copyright © 2011-2022 走看看