类(class)是一批对象(object)的抽象,对象是类的实例(instance)。
?
对事物的描述通常包括两方面:一个是属性,一个是行为。
成员变量其实就是类中的属性。成员方法就是类中的行为。
类
?
成员变量?vs局部变量
?
?
?
静态方法:可以直接通过类来访问静态方法;静态方法的操作可以不依靠对象;静态方法上不能使用this关键字,也不能操作非静态属性和方法。
成员变量?vs?静态变量
①两个变量的生命周期不同
②两种变量的调用方式不同
③成员变量也称实例变量;静态变量也称类变量。
④成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据;静态变量数据存储在方法区(共享数据),所以也叫对象的共享数据。?
?
面向对象三大特征
?
封装
隐藏实现细节,让使用者只能通过指定方法来访问数据。
default修饰符
note:default这个修饰符经常使用,但是对它的访问控制级别经常模糊不清。
?
?
继承
1.继承的概念
当多个类存在相同属性和行为时,将这些类抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只需要继承那个类即可。关键字extends表明正在构造的新生类派生于一个已存在的类。已存在的类被称为超类(superclss)、基类(base?class)或父类(parent?class);新类被称为子类(subclass)。“is-a”关系是继承的一个明显特征。
父类(基类、超类)→子类
?
2.通过extends关键字来实现类与类的继承,如:class?子类名?extends?父类名{}
?
重写(override)vs重载(overload)
重写:子父类中,子类重写了父类的方法。
重载:同一个类,出现方法名称相同、参数列表不同的情况
二者除了都是发生在同名方法之间,没有其他相似之处。
?
继承vs组合
集成:是(is?a),适合用在2个类之间有一般、特殊的关系
组合:有(has?a)的关系,适合用在2个类之间有明确的整体、部分的关系
?
this vs super
this:代表的对象是当前类。
super:用于在子类中调用父类被覆盖的方法
?
Final阻止继承
final关键字是最终的意思,可以修饰类,成员变量,成员方法。
?
多态
多态分两种:
(1)??编译时多态(设计时多态):方法重载。
(2)??运行时多态:Java运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态)
?
相同类型的变量,调用同一个方法时呈现出多种不同的行为特征。从一定角度来看,封装和继承几乎都是为多态而准备的。实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
?
多态:父类型的引用可以指向子类型的对象。
比如 Parent p = newChild();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;
如果有,再去调用子类的该同名方法。
?
多态存在的三个必要条件
?
?
?
?