likes
comments
collection
share

JAVA 面向对象------ 封装

作者站长头像
站长
· 阅读数 16

面向对象的三大特征

封装: 把相关的数据封装成一个“类”组件 继承: 是子类自动共享父类属性和方法,这是类之间的一种关系 多态: 增强软件的灵活性和重用性

我们来讲Java封装,它也是Java面向对象的三大特征之一 封装 举个例子:一台电视相当于一个封装,你用遥控器可以可以访问里面的电视节目;

封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法 好处:

提高安全性 提高重用性

private关键字

是一个权限修饰符 ,可以用来修饰成员变量和成员方法.被私有化的成员只能在本类中访问

JAVA 面向对象------ 封装

修饰符的范围

JAVA 面向对象------ 封装

封装分三步:

第一步:将属性进行私有化 private(不能直接修改属性)

package com.info;
   //类    private:私有
   
public class student {
        
      private String name; //名字(属性)
      private int id; //学号(属性)
       private char sex;//性别(属性)
}

第二步:提供一个公共的(public)set方法 用于属性的判断并赋值 public void setXX{ XX}

package com.info;
   //类    private:私有
   
public class student {
        
      private String name; //名字(属性)
      private int id; //学号(属性)
       private char sex;//性别(属性)
       //提供一些可以操作这些属性的方法
       //提供了一些public的get ,set方法
       //get 获取这个数据
       //set 获取这个数据 
       public void setName(String name){ 
              this.name;
          }
}

第三步:提供一个公共的(public)get方法 用于获取属性的值 public 数据类型 getXX{ return XX}

package com.info;
   //类 private:私有
   
public class student {
        
      private String name; //名字(属性)
      private int id; //学号(属性)
       private char sex;//性别(属性)
       //提供一些可以操作这些属性的方法
       //提供了一些public的get ,set方法
       //get 获取这个数据
       //set 设置这个数据 
       public void setName(String name){ 
              this.name;
          }
       public String getName(){
          return this.name;
          
          }
}

这样,我们就实现了对私有属性的调用

public class Application {
    public static void main(String[] args) {
          student s =new student();

          String name =s.getName();
         s1.setName("帅哥");
         System.out.println(s.getName());  //输出
        
    }

}

验证数据

可以在封装中验证数据的合法性

public void setAge(int age) {
           if (age > 120 || age < 0) {    //不合法
               this.age = 3;
           }else {
               this.age = age;
           
           }
s.setAge(7);
System.out.println(s1.getAge());// 7
s.setAge(-1);
System.out.println(s1.getAge());// 3

将构造器和 setXxx 结合

alt+insert 快捷键 自动生成

JAVA 面向对象------ 封装

JAVA 面向对象------ 封装

package com.encap;

public class encapDome {
   private String name;
   private int age;
    private double salary;

    public encapDome(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getSalary(double v) {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    public void info(){
        System.out.print("姓名"+this.name+"年龄"+this.age+"薪水"+this.salary);
    }
}

package com.encap;

public class personInfo {
    public static void main(String[] args) {
        encapDome E=new encapDome("张三",12,3.12);
        E.setSalary(5.32);
      System.out.println( E.getAge());
        E.info();
    }
}
 12  姓名张三 年龄12 薪水5.32