开启生长之旅!这是我参加「日新方案 12 月更文挑战」的第8天,点击检查活动详情
面向目标的三大特征
封装: 把相关的数据封装成一个“类”组件
承继: 是子类自动同享父类特点和办法,这是类之间的一种关系
多态: 增强软件的灵活性和重用性
咱们来讲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