面向对象:封装
回顾基础
- 类与对象
- 类是一个模板是抽象的;对象是一个具体的实例
- 方法
- 定义,调用!
- 对应的引用
- 引用类型:基本类型(8个)
- 对象是通过引用来操作的:栈(引出模板)------>堆(真实对象是在堆里)
- 属性:字段Field ,成员变量
- 默认初始化
- 数字(默认):0, 0.0
- char:u0000
- boolean: false
- 引用:null
- 修饰符 属性类型 属性名 = 属性值! (属性的定义)
- 默认初始化
- 对象的创建和使用
- 必须使用new,关键字创造对象,构造器:
- Person yuecheng =new Person();
- 对象的属性 :yuecheng .name;
- 对象的方法:yuecheng.sleep();
- 类:
- 静态的属性(属性)
- 动态的行为(方法)
面向对象: 封装
-
该露的露,该藏的藏
- 程序设计要追求“高内聚,低耦合”。
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
- 低耦合:仅暴露少量的方法给外部使用。
- 程序设计要追求“高内聚,低耦合”。
-
封装(数据的隐藏)
- 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。、
- 属性私有,get/set(重点)
private 关键词
-
private会将属性私有,
-
因为属性私有,我们即使new了对象也无法使用这些属性。
-
所以java提供了可以操作这些属性的方法
-
一些 public的get/set方法
- get:获得这个数据,属性
- set:给这数据/属性,设置值
-
记住一个快捷键: ait + insert
- 自动生成 get/set 方法
封装初体验
package com.yuecheng.oop.Demo04; public class Student { // 属性私有 private String name ;// 名字 private int id; // 学号 private char sex; //性别 // 因为属性私有,我们即使new了对象也没办法用这些属性, // 所以提供一些可以操作这个属性的方法! // 提供一些 public 的 get/set 的方法 // get : 获得这个 数据,属性 public String getName(){ return this.name; } // set :给这 数据,属性,设置值赋值 public void setName(String name){ this.name = name ; } // alt+ insert 自动生成 get/set 方法的快捷键 public int getId() { return id; } public void setId(int id) { this.id = id; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } }
package com.yuecheng.oop; import com.yuecheng.oop.Demo04.Student; public class Application { public static void main(String[] args) { Student s1 = new Student(); s1.setName("玥骋"); System.out.println(s1.getName()); } }
封装有什么用:
-
1.帮我们过滤 不合法内容(做一些安全性的判断);
2.提高程序安全性,保护数据;
3.隐藏代码的实现细节;
4.统一接口;
5.系统的可维护性增加。
//封装可以帮我们过滤一些不合法的数据 public void setAge(int age) { if (age>120||age<0){// 年龄大于120小于0不合法, this.age=3; }else{ this.age=age; } }
思考为什么 println方法可以输出各种类型?
- 通过方法的重载
- println通过方法的重载,有各种的输出类型。