面向对象
面向对象(Object-Oriented Programming)
面向对象思想:物以类聚,分类的思维模式
面向过程思想:线性
宏观:面向对象(OOP,抽象的,相当于框架)
微观:面向过程(具体的,相当于流程)
一、本质:以类的方式组织代码,以对象的组织(封装)数据。
二、三大特征:
- 封装:将数据封装,只对外提供一个接口。
- 继承:子类继承父类。
- 多态
- 从认识论角度考虑:先有对象(具体的事物)后有类(抽象的,对对象的抽象)
- 从代码运行角度考虑:先有类后有对象,类是对象的模版,对象是类的实例
三、静态和非静态
- 调用非静态方法(另一个类),需要先实例化类。
- static是和类一起加载的。
四、类与对象的关系
- 类是一种抽象的数据类型,对某一类事物整体描述/定义。
- 对象是抽象概念的具体实例。
五、构造器
-
类中的构造器也称为构造方法,是进行创建对象的时候必须要调用的。
-
特点:
- 必须和类的名字相同
- 必须无返回类型,也不能写void
-
作用:
- new本质是调用构造方法
- 初始化对象的值
注:写一个类的时候,默认有无参构造;一旦定义了有参构造,则无参构造必须写出来。
Alt+insert:快速生成构造方法。
this:表示当前类。
六、封装
-
高内聚,低耦合
- 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉。
- 低耦合:仅暴露少量的方法给外部使用。
-
通常操作接口来访问
-
属性私有,调用用get,set
-
提高程序的安全性
七、继承
- extends,子类是父类的扩展。
- Java中类只有单继承,无多继承。
- 子类继承父类,就会拥有父类的所有非私有方法。
Ctrl+H:显示层次结构。
注:Java中所有的类默认继承Object类。
八、super、this
- 调用父类构造器是必须要在子类构造器的第一行。
- 默认调用父类的无参构造器(隐藏代码super())
- super只能出现在子类的方法或构造方法中。
- super和this不能同时调用构造方法。
- this():本类的构造。
九、重写(@Override)
- 重写都是方法的重写,和属性无关。
- 静态方法的情况下,方法的调用只和定义的数据类型有关(左边的);否则,与定义类型无关。
- 有继承关系。
- 方法名必须相同,参数列表必须相同。
- 修饰符:范围可扩大。
- 抛出的异常:范围可缩小。
- 不能重写的情况:
- static方法属于类,不属于实例
- final常量
- private方法
十、多态
-
多态是指方法的多态,属性没有多态。
-
父类和子类有联系,类型转换异常(ClassCastException)
-
存在条件:
-
继承关系
-
方法需重写
-
父类引用指向子类对象
Father f1=new Son() 此时f1调用的方法与Father相关,但被调用的方法若被重写,则结果会显示子类中重写的方法
-
-
含义:即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
-
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。
instanceof:(类型转换)引用类型,判断一个对象是什么类型。
十一、抽象类
- abstract,抽象方法,只有方法名字,没有方法实现。
- 不能new这个抽象类,只能靠子类去实现它;约束!
- 抽象类中可以写普通方法。
- 抽象方法必须在抽象类中。
- 抽象的抽象:约束!
- 抽象类存在构造器,不能直接new。
- 存在的意义:抽象出来,提高开发效率。
十二、接口(interface)
- 接口:只有规范(抽象方法),自己无法写方法~专业的约束! 约束和实现分离:面向接口编程~
- 本质:就是定义规则,让大家遵守。
- 接口就是定义一些方法,让不同的人实现。
- 接口类默认public abstract
- 接口类中定义的方法默认public static final
- 接口不能被实例化,其中无构造方法。
- implements可以实现多个接口。实现接口时必须重写接口中的方法
Ctrl+Alt+T:包围方法快捷键

浙公网安备 33010602011771号