JAVA 面向对象------ 封装
面向对象的三大特征
封装: 把相关的数据封装成一个“类”组件 继承: 是子类自动共享父类属性和方法,这是类之间的一种关系 多态: 增强软件的灵活性和重用性
我们来讲Java封装,它也是Java面向对象的三大特征之一 封装 举个例子:一台电视相当于一个封装,你用遥控器可以可以访问里面的电视节目;
封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法 好处:
提高安全性 提高重用性
private关键字
是一个权限修饰符 ,可以用来修饰成员变量和成员方法.被私有化的成员只能在本类中访问
修饰符的范围
封装分三步:
第一步:将属性进行私有化 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 快捷键 自动生成
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
转载自:https://juejin.cn/post/7172485502593925156