面向对象是什么
提到面向对象编程,就不得不提到面向过程的编程思想。
面向过程的编程思想
面向过程强调的是一种功能行为,是解决问题办法的操作流程,是以函数为最小单位,考虑怎么做来解决问题。
面向对象的编程思想
不同于面向过程的思想,面向对象的思想是将功能封装进对象,强调的是具备特定功能的对象。以对象为最小单位,考虑谁来做,谁来解决问题。
面向对象有三大特性
- 封装:隐藏对象内部的复杂性,只对外公开简单的接口,类的使用者不需要知道类是怎样实现的。
在JAVA中,类的封装性体现在四种访问权限修饰符:
修饰符 | 权限 |
---|---|
public | 类内部、同一个包、不同包的子类、同一个工程 |
protected | 类内部、同一个包、不同包的子类 |
缺省 | 类内部、同一个包 |
private | 类内部 |
- 继承:如果多个类具有共同的属性和行为,就可以将这些内容封装为一个通用类,之后其他类就不需要再定义这些共同的内容,直接继承通用类即可。
- 在 JAVA 中使用关键字 extends 来实现继承。
- 子类继承了父类,就继承了父类的方法和属性,子类可以使用,也可以重写父类的方法和属性。
子类可以重写父类方法,对其进行覆盖。但是子类不可以重写父类的私有方法。
重写的规则:
- 子类重写的方法必须和父类被重写的方法具有相同的方法名称和参数列表;
- 子类重写的方法的返回值类型不能大于父类被重写的方法的方法的返回值类型;
- 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限;
- 子类与父类同名同参的方法,要不同为static ,要不同为非static(因为static方法是属于类的)。
- 特别的,子类不能直接访问父类中的private 成员变量和方法。
Java中只支持单继承,不允许多重继承。即一个子类只能有一个父类,而一个父类可以派生出多个子类。
- 多态:在Java中,多态性是指父类的引用指向子类对象,即父类型的变量可以引用子类型的对象,使用父类对象的地方都可以引用子类型。
子类是它父类的特殊化,每个子类的实例都是其父类的实例,但是反过来不成立。