Java面向对象三大特征-封装

Java面向对象三大特征-封装

封装

  1. 概念

    封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.

  2. 好处
    1. 只能通过规定方法访问

      public class Person {
              
              
          //隐藏类的信息,这样外部的类就不能访问
          private String name ;
          private int age;
          //公共权限构造方法赋值
          public Person(String n,int a){
              
              
              if(n!=null) name = n;
              if(a>0) age = a;
          }
      }
      
      public class Test {
              
              //对构造方法中私有权限赋值
          public static void main(String[] args) {
              
              
              new Person("张三" ,10);
          }
      }
      
    2. 隐藏类的实现细节

    3. 方便加入控制语句

    4. 方便修改实现

  3. 具体表现
    public class Person {
          
          
        //隐藏类的信息,这样外部的类就不能访问,即封装
        private String name ;
        private int age;
        public Person(){
          
          
    
        }
        //可以向外部类提供专门的方法,对类中的私有属性进行访问
        public void setAge(int age) {
          
          
            this.age = age;
        }
        //可以向外部类提供专门的方法,对类中的私有属性进行输出
        public int getAge() {
          
          
            return age;
        }
    
        public void setName(String name) {
          
          
            this.name = name;
        }
    
        public String getName() {
          
          
            return name;
        }
    }
    
    public class Test {
          
          
        public static void main(String[] args) {
          
          
            Person p1 = new Person();//创建对象
            p1.setAge(10);//向私有属性赋值
            p1.setName("张三");
            System.out.println(p1.getAge());//输出私有属性
            System.out.println(p1.getName());
        }
    }
    

    注意:在idea中可以通过**Generate…**中的Getter and Setter对私有属性快速生成访问方法.

  4. this关键字

    this关键字代表自身类的对象

    使用this关键字引用成员变量和成员方法

    在一个类的方法或构造方法内部,可以使用“this.成员变量名”这样的格式来引用成员变量名,常常用来区分同名的成员变量和局部变量。

    注意:this关键字必须放在非静态方法里面

    例如:public void setName(String name) {
    this.name = name;//this对当前对象的引用,此处加以赋值name,同时也是为了区分成员变量与输入的参数.

    //在堆中用new创建对象,this关键字代表堆中的这个对象

    ​ }

如有错误,欢迎在评论区指出,也欢迎大家讨论.

猜你喜欢

转载自blog.csdn.net/qdzjo/article/details/109251094