1. 三大特性,封装、继承、多态
面向对象的本质就是,以类的方式组织代码,以对象的形式封装数据
-
封装:
- 隐藏对象的属性和细节不允许外部直接访问和调用,只提供一个对外访问的入口。
-
继承(extends):
- 子类继承父类的行为和特征,子类继承了父类之后具有父类的方法和属性。如果父类的属性是私有化的,那子类是无法继承这个属性的。java类中只有单继承,无法多继承
-
多态:
- 多态的前提是需要有继承关系,父类或接口定义的引用变量可以指向子类或具体实现类的实例对象
-
方法的重写:
子类的方法名,返回值类型,参数必须都一样
比如A类是父类,B类是A类的子类,他们都有一个同名的方法 test()。
如果A a=new B();调用了a.test();
同名的方法会直接调用B类这个子类中的方法这就是重写, 但是如果B类中这个同名的方法是静态的话,就直接调用父类中的同名方法,加上了static的话就不算重写了。 -
方法的重载:
与重写不同的是,重载不需要有继承关系。它只需要在同一个类下方法名一样即可,于返回值类型和参数类型无关。想要调用某个重载方法的话,只需要在调用的时候把参数列表跟想要调用的重载方法保持一致即可。
重写和重载都是多态实现的方式
2. OOP 七大原则
- 开闭原则:对扩展开发,对修改关闭;
- 里氏替换原则:继承必须确保父类所拥有的性质在子类中仍然成立;
- 依赖倒置原则:要面向接口编程,不要面向实现编程;
- 单一职责原则:控制类的粒度大小,将对象解耦、提高其内聚性;
- 接口隔离原则:要为各个类建立它们需要的专用接口;
- 迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话;
- 合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现;