什么是面向对象
面向对象编程(Object-Oriented Programming,OOP)
面向对象编程的本质就是
以类的方式组织代码,以对象的形式封装数据
从认识角度考虑是先有对象后有类。对象是具体的事物。类是抽象的,是对象的抽象
从代码运行角度考虑是现有类后又对象。类是对象的模板。
抽象
类的特性
- 封装
- 继承
- 多态
创建与初始化对象
注意一个项目应该只有一个main方法
构造器
类中的构造器也称构造方法,是在进行创建类的时候必须调用的。并且构造器有以下两个特点:
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
作用
可以设置初始值
使用new关键字,本质上是在调用构造器
如果既有无参构造器,又有有参构造器,那么Java会自己判断进入哪个构造器
构造器快捷键:alt+insert
注意点:如果有了有参构造器,而没有写上无参构造器,进行无参构造会报错!!
封装
程序要求:“高内聚,低耦合”。高内聚:类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
属性私有,get/set方法调用
set方法一般有安全性判断
快捷键:Alt+insert
意义:
- 提高程序的安全性,保护数据;(不合法数据)
- 隐藏代码实现的细节
- 统一接口
- 系统可维护性增加
继承
继承的本质是对一批类的抽象。
extend的意思是“扩展”。子类是父类的扩展。
Java中只有单继承
虽然设置属性是私有的,但可以设置一些公有的方法来返回,修改属性值。
快捷键:Ctrl+h 快速查看子类父类关系树。
super & this
private不能被继承
这说明在Students构造器中有隐藏的代码
super();//这个必须在首行
而this();也必须在第一行才行,不然也会报错。所以要么调用子类,要么调用父类
如果父类没有无参构造,那么子类也没有,因为子类默认会有隐藏的super();当然一定要调用也是可以的,只需调用父类的有参即可super(参数);
super注意点
- super调用父类的构造方法,必须在构造方法的首行
- super必须只能出现在类的方法或者构造方法中
- super和this不能同时调用构造方法
super Vs this - 代表的对象不同
- this:本身调用的对象
- super:代表父类对象的应用
- 前提
- this:没有继承也可以使用
- super:只能在继承条件下才可以使用
- 构造方法
- this(); 本类的构造
- super(); 父类的构造
多态
即同一方法可以根据发送对象的不同而采取多种不同的行为方式。
一个对象的实际类型是确定的,饭可以指向对象的引用类型有很多。
多态存在的条件:
- 有继承关系
- 子类重写父类
- 父类引用指向子类对象
多态注意点
- 多态是方法的多态,属性没有多态
- 父类和子类,有联系 类型转换异常!ClassCastException!
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f1 = new Son();
无法重写的:
- static 方法,属于类,不属于实例
- final 常量
- private 方法
instanceof
A instanceof B 返回True/False
A与B是否有关系
今日总结就是这些啦!!!
每天都要开心,没准下一秒有伤心事,趁现在没有自然要开心点!(๑><๑)