Java面向对象三大特性之封装
入口
-
java面向对象三大特性:
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
继承:继承是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。
多态:同一个引用类型,使用不同的实例,执行不同的操作。方法重写是实现多态的基础。
-
java面向对象三大特性之封装(数据的隐藏):
通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
1、提高程序的安全性,保护数据
2、隐藏代码的实现细节
3、统一接口
-
注意:
程序追求:高内聚,低耦合
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅暴露少量的方法给外部使用
良好的封装便于修改内部代码
-
实例:
1 package oop.demo5; 2 3 /** 4 * java面向对象三大特性:封装、继承、多态 5 * java面向对象三大特性之封装(数据的隐藏): 6 * 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏 7 * 1.提高程序的安全性,保护数据 8 * 2.隐藏代码的实现细节 9 * 3.统一接口 10 * 4.提高系统的可维护性 11 * 12 * 程序追求:高内聚,低耦合 13 * 高内聚:类的内部数据操作细节自己完成,不允许外部干涉 14 * 低耦合:仅暴露少量的方法给外部使用 15 * 良好的封装便于修改内部代码 16 * 提高系统的可维护性 17 */ 18 public class Application { 19 20 public static void main(String[] args) { 21 22 Student s1 = new Student(); 23 24 s1.setName("秦疆"); 25 System.out.println(s1.getName()); 26 27 s1.setAge(999); //不合法数据 setAge方法校验 28 System.out.println(s1.getAge()); 29 } 30 }
属性私有 get
-
初识:
private 属性私有
快捷键:Alt + Insert 自动生成 get
-
示例:
-
实例:
1 package oop.demo5; 2 3 /** 4 * private 5 * 属性私有 6 * 快捷键:Alt + Insert 自动生成 get set 方法 7 */ 8 public class Student { 9 10 private int id; //学号 11 private String name; //名字 12 private char sex; //性别 13 private int age; //年龄 14 15 /** 16 * 提供可以操作这些属性的方法 17 * 提供一些 public 的 get、set 方法 18 * get:取值 19 * set:赋值 20 */ 21 public String getName(){ 22 return this.name; 23 } 24 25 public void setName(String name){ 26 this.name = name; 27 } 28 29 public int getId() { 30 return id; 31 } 32 33 public void setId(int id) { 34 this.id = id; 35 } 36 37 public char getSex() { 38 return sex; 39 } 40 41 public void setSex(char sex) { 42 this.sex = sex; 43 } 44 45 public int getAge() { 46 return age; 47 } 48 49 public void setAge(int age) { 50 if (age > 120 || age < 0){ //年龄不合法则为3岁小朋友 51 this.age = 3; 52 }else { 53 this.age = age; 54 } 55 } 56 }