一、面向对象编程(Object-Oriented Programming, OOP)
- 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
- 从认识论的角度:先有对象后有类。对象是具体的事物,类是对对象的抽象。
- 从代码运行的角度,先有类,再有对象。类是对象的模板。
二、创建与初始化对象
- 使用new关键字创建对象
- 使用new关键字创建的时候,除了分配内存空间以外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
三、构造器
- 类中的构造器也称为构造方法,是进行创建对象的时候必须要调用的。
- 特点:① 和类名相同;② 没有返回值,也不能写void;
- 作用:① new本质在调用构造方法;② 初始化对象的值;
- 注意点:一旦定义了有参构造,无参就必须显示定义。
四、创建对象内存分析
这篇博客讲得很详细。
https://blog.csdn.net/cccccccmmm/article/details/125940147
五、三大特性:封装、继承、多态
封装
- 程序追求“高内聚,低耦合”;
- 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
- 低耦合:仅暴露少量的方法给外部使用;
- 属性私有,get、set方法;
- 关键词:private;
继承
- 继承的本质是对某一批类的抽象;
- extends的意思是“拓展”,子类是父类的拓展;
- Java中类只有单继承,没有多继承;
- 继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等;
- 继承关系可以分成两个类,一个是子类(派生类),一个是父类(基类)。
- 四个修饰符:public/protected/default/private;
- private 私有的东西无法被继承;
- 在Java中,所有的类都默认继承Object类;
super
- super是调用父类的构造方法,必须在构造方法的第一个;
- super必须只能出现在子类的方法或者构造方法中;
- super和this不能同时调用构造方法;
方法重写
- 方法重写的作用与相关解释:
http://c.biancheng.net/view/1000.html - 老师在课堂上举的例子的原因:
静态方法是类的方法,而非静态方法是对象的方法;
有static时,b调用了B类的方法,因为b是用B类方法定义的;
没有static时,b调用的是对象的方法,而b是用A类new的,即B是A new出来的对象,因此调用了A的方法。 - 什么情况下能进行方法重写?
- 有继承关系,子类重写父类的方法;
- 方法名必须相同,参数列表必须相同;
- 修饰符:范围可以扩大但不能缩小;public>protected>default>private
- 抛出的异常:范围可以被缩小,但不能扩大;ClassNotFoundException-->Exception
多态
同一个方法可以根据发送对象的不同而采用多种不同的行为方式。
子类能调用的方法都是自己的或者继承父类的;
父类可以指向子类,但是不能调用子类独有的方法;
instanceof
判断一个对象是什么类型。
类型转换
低转高可以自动转换,子类转换成父类;
高转低需要强制类型转换,父类转换成子类,(转换后的类型).变量名;