父类和子类的覆盖
子类不可以覆盖父类中的属性
子类可以覆盖父类中的方法–模板方法设计模式
protected关键字
继承体系的子类中可见,可以访问
在同一个包中可见
强制转换
((MyBook)book).printInfo();
出现类型转换异常java.lang.ClassCastException
父类的类型不能调用子类扩展的方法(父类没有定义的)
通过强制转换的方式可以实现调用,但能否转换成功的责任就是客户端的。
抽象方法
abstract抽象。就好比饭不可以被描述,但是酱油饭可以被描述。
因此,抽象的对象难以被描述,但是具体的对象可以被描述
* 1.abstract修饰的方法就是抽象方法
* 2. 抽象方法所在的类必须是抽象类
* 3. 抽象类仅用于被继承,不能被实例化
* 4. 子类继承抽象类,必须实现所有的抽象方法,(抽象类除外)
访问权限
构造器、属性和方法都可以被修饰符所修饰。private Flower()
- public
- default(不指定)
- protected
- private
instanceof(判断类型)
phone instanceof Object
- 判断整个的继承体系,只要在当前对象之上的都可以满足。
this,super
this指向本类的实例化对象
super指向父类的实例化对象
高内聚-低耦合
- 高内聚,也就是封装度高,高度的隐藏细节
- 低耦合,也就是对象之间的依赖性低
23套设计模式就是解决这个问题的。
细粒度,方法和对象,尽量的小,方便组装。细粒度越是细可复用的东西就越多
面向对象的目标
对修改关闭,对扩展开放
关键字
访问修饰符: private public protected (defualt)
抽象的关键字 : abstract
两个指针: super,this
运算符: instanceof
继承: extends
实例化: new
声明类: class
声明包和导入包:package,import