java面向对象【java基础】
面向对象编程的本质:以类的方式组织代码,以对象的方式(封装)组织数据。
java面向对象的三大特征:封装,继承、多态
1.封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
用通俗的话来说,就是将数据和一些复杂的东西封装起来,保护数据的安全,另外留出一个口,便于用户操纵。
封装的核心:属性私有,get/set
封装的意义:
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 提高系统的可维护性
2.继承
继承的本质是对一批类的抽象,从而实现对现实世界更好的建模
-
注意:单根继承原则
-
方法的重写:重写必须是继承关系,子类重写父类的方法
- 1.方法名必须相同
- 2.参数列表必须相同
- 3.修饰符:范围可以扩大,但不可以缩小
- 4.抛出异常:范围可以缩小,但不可以扩大
-
为什莫要重写方法:
-
1.父类的功能,子类不一定需要,或者不够
3.多态:同一个方法,可以根据发送对象的不同,而采用多种不同的行为方式
一个对象的实际类型是确定的,但引用类型不一定相同,因为可以使用父类的引用指向子类。
通俗来说:就是,当子类重写了父类的方法时,父类和子类都有了同一个方法,这个时候,调用该方法,是执行子类的方法还是执行父类中的方法呢。这个就是方法的多态。
注意:多态是方法的多态,属性没有多态
多态存在的条件:
- 继承关系:必须是继承关系,否则直接会报错
- 方法需要重写:如果没有重写,不存在方法的多态
- 注意:以下关键字修饰的方法不能被重写,也就不存在多态。
- 1.static方法属于类,不属于实例,不能重写
- 2.final 常量,不可改变的
- 3.private方法,是私有的,不能被继承。
- 注意:以下关键字修饰的方法不能被重写,也就不存在多态。
- 父类的引用,指向子类对象:Father f1=new Son();
对象执行方法的规则:
- 对象能够执行哪些方法,主要看队形左边的类型,和右边关系不大
- 子类重写了父类的方法,则执行子类的方法。