Java学习第四天
java的三大特性 :封装 继承 多态
- 封装
从现实世界抽象出具像物时,一个物体总是包含它的属性,并且能自己操作属性。比如商店,和存放在其中的商品。从商店购买商品时,商品就是它的属性,而提供货物给顾客就是它的一个方法。
我们在编写类是,就是把成员变量和方法统一放到一个类中。
因为在现实世界中,商店也要从供货商那里拿货,所以商店和供货商也是有一定的关系,
而这种关系在java中是可以继承的。 - 继承
供货商同样有这商品的供销关系,所以商店可以继承供货商,换句话说,就是商店依赖于供货商。所以商店可以访问供货商的成员变量(商品)和方法(购买商品)。 - 多态
由于商店中的方法跟供销商不同,供销商售卖货物没有商店那么复杂,所以商店希望有自己的售卖方法,于是多态解决了这个问题。同样的行为,不同的方法实现。
多态的2种方式:
静态:重载(方法签名不同)
重载调用哪个方法 与参数的引用类型相关 和实际指向的类型无关。
如果没有完全的类型匹配,那么会根据继承关系向下找。
动态:覆盖原方法(方法签名一致,但方法体内部不同)
覆盖调用哪个方法,与实例指向的类型相关,也就是this自引用。
核心问题:就是调用哪个方法,运用哪些数据(this)是谁?
多态 到底调用哪个方法?
可以调用哪些方法,取决于引用类型。
具体调用哪个方法,取决于实例所属对象的类
-
反射
反射就是通过类的类,来访问各种类的成用变量和方法,无视访问修饰符的权限,就算你是protected也能访问。 -
接口
实现了接口的类,不算是多继承,因为接口没有成员变量,只有方法
且方法只能用 public abstract 修饰。一个类可以实现多个接口,实现了接口的类可以把这个实例对象赋值给接口引用。 -
抽象类
它是接口和类的混合体。
不可以被实例化
被 abstract修饰,可以有抽象方法