• java知识28 Java封装【多测师】


    一、面向对象中,封装是指将抽象性函式接口的实现细节部分包装、隐藏起来的方法
    1.封装可以被认为是一个屏障,防止该类的代码和数据被外部类定义的代码随机访问
    2.要访问该类代码和数据需要接口控制
    3.封装可以修改自己的实现代码,而不用修改调用我们代码的程序片段
    4.精确控制成员变量
    5.隐藏信息,实现细节
    
    二、封装的步骤
    1.修改属性的可见性来限制对属性的访问(一般用private来限制)
    这段代码中 将name和age属性设置为私有,只有本类可以访问,其他类访问不了 
    public class Person { 
        private String name; 
        private int age; 
    }
    2.对每个值属性提供对外的公有方法访问,用于对私有属性的访问
    public class Person{
        private String name;
        private int age;
    
        public int getAge(){
          return age;
        }
    
        public String getName(){
          return name;
        }
    
        public void setAge(int age){
          this.age = age;
        }
    
        public void setName(String name){
          this.name = name;
        }
    }
    采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。
    
    三、举例
    定义一个Person类,给类定义一个私有属性age,setAge和getAge方法是为了别的类访问Person类的私有属性age定义的 代码如下:
    class Person {
      private int age;
    
      public void setAge(int age) {
       this.age = age;
      }
    
      public int getAge() {
       return age;
      }
    }
    
    public class Foo {
      public static void main(String[] args) {
       // 一个类的私有属性在其他类中只能通过get和set方法去访问
       Person p = new Person();
       p.setAge(18);// 设置属性age的值
       int age = p.getAge();
       System.out.println(age);// 输出为5
      }
    }
    运行结果:18
    
    四、举例2
    下面实例public方法是外部类访问该类成员变量的入口,这些方法被称为getter和setter方法,因此要访问类中私有成员变量的类都要通过这些getter和setter方法
    调用方法:
    public class RunEncap {
      public static void main(String[] args) {
       EncapTest encap = new EncapTest();
       encap.setName("dd");
       encap.setAge(20);
       encap.setIdNum("1234ms");
    
       System.out.println("Name:" + encap.getName() + "Age:" + encap.getAge());
      }
    }
    
    public class EncapTest {
      private String name; // 私有成员变量
      private String idNum;
      private int age;
    
      public int getAge() {
       return age;
      }
    
      public String getName() {
       return name;
      }
    
      public String getIdNum() {
       return idNum;
      }
    
      public void setAge(int newAge) {
       age = newAge;
      }
    
      public void setName(String newName) {
       name = newName;
      }
    
      public void setIdNum(String newId) {
       idNum = newId;
      }
    }
    
    运行结果: Name:dd Age:20
  • 相关阅读:
    游戏开发制作流程详细介绍
    成为群体领袖
    别人的,值得借鉴的经验
    linux下iptabes配置详解
    Oracle tnsnames.ora
    同时展多个物料BOM List
    Oracle判断是否为数字或数字型字符串
    linux上的vnc配置
    Oracle 中的正则函数
    如何将 backordered 的SO# 重新发运?
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/13110973.html
Copyright © 2020-2023  润新知