一.面向对象之三大特性
1.封装
指将对象的属性私有化,提供一些可以访问属性的方法,我们通过访问这些方法得到对象的属性。
优点:
·减少耦合:可以独立的开发、测试、优化、使用、理解和修改。
·减轻维护负担:更容易理解,调试过程中不影响其他模块。
·提高软件的可重用性。
2.继承
指某新类继承已经存在的类,该新类拥有被继承的类的所有属性和方法,并且新类可以根据自己的情况增加属性和方法。子类即为新类,父类即为已存在的方法。
1.子类拥有父类所有的属性和方法,包括私有属性和方法,但是子类不能访问父类的私有属性和方法,只是拥有。
2.子类可以根据需要自行进行扩展,增加父类没有的自己的属性和方法。
3.子类可以用自己的方式去实现父类的方法。
其中Java不支持多继承。
3.多态
指同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同的操作。
JavaGuide:多态指程序中定义的引用变量所指向的具体类型和通过该应用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向那个类的实例对象,该应用变量发出的方法调用到底是哪个类中实现的方法,必须在程序运行期间才能确定下来。
在Java有两种形式可以实现多态:继承即多个子类对同一个方法的重写;接口即实现接口并覆盖接口中同一方法。
二.重载与重写的区别
重载发生在同一个类中,具有相同的方法名,但是有不同的参数,参数的个数不一样,参数的位置不一样,这就叫重载,比如 构造方法,有有参构造和无参构造。
重写是发生在子类继承父类时,对父类中的一些方法根据自己的需求进行重新操作。
三.接口与抽象类的区别
接口和抽象类是支持抽象类定义的两种机制。
接口是公开的,不能私有方法和变量,接口中的所有方法都没有方法体,通过关键字Interface实现。
抽象类是可以有私有方法和变量