OOP封装
-
public–不安全,用户可以为所欲为
-
private–安全,私有地,用户无法操作
-
设置年龄属性
// 用public的方法给用户提供服务 public void setAge(int age){ if(age < 0 || age > 100 ){ this.age = 0; }else{ this.age = age; } } public int getAge(){ return this.age; }
-
-
作用–避免用户不合法操作
-
实质
- setter
- getter
-
Lombok的jar包–直接在idea加入插件就行
- @Getter
- @Setter
- @ToString
- @Data(代表了equals(),toString(),hashCode())
- 一般类的上面,也可以单独写在属性前面
OOP继承
-
特点: 上梁不正下梁歪
-
在类的后面加extends
-
如果父类前面@Setter,@Getter过了就不用在子类重复这个步骤
-
不能多继承(C++支持,因为过于复杂,Java取消了)
-
// 错误格式 class Human extends Anilmal,Monkey; // 正确格式 class Monkey extends Animal; class Human extends Monkey;
-
方法重写:@Override
-
super.父类方法()–“啃老”(@Override后自动生成)
-
儿子无法继承父亲得到构造器–你老子还是你老子
- 解决方法:啃老啃到底–在构造方法里super(field);
- 也可以自己写–儿子出息了
-
final–断子绝孙
-
修饰符
-
无法继承
-
方法final,无法被重写,只能用父类准备好的
-
需要写死就final,比如一些固定的静态常量
-
即使在同一个类也改不了
-
常量定义需要全大写,单词用下划线隔开(crtl+shift+u)
-
一次定义终生使用
-
举例:
-
// 常量定义,避免后续误操作 private static final String TEXT_COMMUNITY_NAME = "flower";
-
-
OOP多态
-
需要有继承关系
-
本质–“花木兰替父从军”
-
// 替父从军 向上转型 HuaHu huaHu = new HuaMuLan(); System.out.println(huaHu.name); System.out.println(huaHu.age); huaHu.fight(); // 有一天,仗打完了,遇上自己心爱的人,做回自己 向下转型 HuaMuLan huaMuLan = (HuaMuLan)huaHu; System.out.println(huaMuLan.name); System.out.println(huaMuLan.age); huaMuLan.dressing();
-
HuaHu 45 干架! HuaMuLan 19 化妆!
-
就像吕子乔,在外宣称aka.吕小布
-
一个对象有多个行为,功能多了