封装
·why: 因为对类的属性的直接操作(public)可能会导致错误、安全等问题
·how:①Java中通过将数据声明为私有的(private)
②再提供公开的(public)方法:getXXX和setXXX实现对该属性的操作
·以实现下述目的:
·隐藏一个类的实现细节;
·使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
·便于修改,增强代码的可维护性;
继承
1.why?①.提高了代码的复用性,减少了代码的冗余。
②.增加了代码的可扩展性
2.how? 关键字extends 扩展
格式: [修饰符]class Student extendsPerson{}
3.Student类叫子类、派生类、SubClass
Person 类叫父类、基类、SuperClass
4.子父类的关系是相对的 classStudent extends Person{}
class EleSchStudent extends Student{}
5.继承了什么?
对于私有的呢? 由于访问修饰符的问题所以无法直接访问,可以通过getters和setters访问
在子类中,可以使用父类中定义的方法和属性,也可以创建新的数据和方法。
6.没有继承什么呢? 绝对不能继承构造器的
7.extends 子类是对父类的“扩展”
8.java中的继承是单继承,一个子类只能有一个父类,一个父类可以有多个子类
9.不要为了继承而继承
10.Object是所有类的父类
多态
1.从字面的意思:一种事物的多种表现形式
a.方法的重载、方法的重写
b.子类对象的多态性
前提:1.子类继承父类(实现接口)2.子类重写父类的方法
-如何实现: 将父类的引用指向子类的对象实体,
然后使用这个父类引用调用的重写的方法
实际上就是调用子类重写的方法
- 子类对象的多态性:
对子类重写的父类的方法有效、对子类特有的无效
-多态性不适应于属性
Person p2 = new Man();
将父类的引用执行子类的实体(向上转型,将子类对象转换为父类)
p2.drinkBeer();
-why?java程序运行有两种状态:编译,运行状态
-对于多态:编译看左边,运行看右边