在面向对象这一学习阶段中,我们学习了面向对象的编程思想、对象和类、成员变量\局部变量\静态常量、构造方法、面向对象的三大特性 (封装、继承、多态)、重写、重载、this和super的应用场景、object类、向上\向下转型、final、abstract、interference、static等知识点,相对于之前学习的java基础知识,面向对象的知识就要复杂很多,学起来会困难一些,但只要多理解、多动手,慢慢地就会熟悉和掌握面向对象的编程思想和基础知识,只要功夫深,铁棒磨成针,付出是会有收获的。就我而言,基础知识基本掌握,但自我编写代码的能力还是比较欠缺,需要加强动手能力和逻辑思维能力。下面是根据老师的笔记整理的部分知识点。
- 面向对象:所有事情在需要时让各个对象执行,注重创建解决问题的对象。
- 对象object:某个类的具体实例,用于执行其类中的方法。
创建对象: 类名 对象名 = new 构造方法([参数]);
- 类class:是一系列拥有相同属性和行为的对象的集合,是对象的模板。
定义类: [修饰符] class 类{ //属性,定义变量 //行为,定义方法 }
- 成员变量、局部变量、静态常量
成员变量:定义在类中的变量,使用范围在该类中,也称为这个类的属性,它有默认值,在对象创 建时创建,通过对象访问。 静态常量:特殊的成员变量,使用范围在该类中,用static和final修饰,它通常需要在定义时赋 值,在类加载时就创建,通过类名方法。 局部变量:定义在方法中的变量,使用范围在该方法中,它没有默认值,在赋值后才能使用,在方 法调用时创建。
- 构造方法:是一种特殊的方法,方法名和类名一致,没有返回值部分。
[访问修饰符] 类名(){ }
- 面向对象的三大特性
封装:将类中的属性使用private修饰后,就可以不允许非当前类进行访问,以此达到保护核心代码的目的。 封装的步骤:(private的使用) 继承:类A extends 类B ,类A就是类B的子类。类A就能直接使用类B中非私有成员。 或接口A extends 接口B。 多态:在继承中,子类的对象,可以保存到父类的变量中。再调用方法时,调用的是子类重写后的方法。 父类 对象 = new 子类();
- 重写override:子类继承父类后,对父类中的某个非私有方法进行重写,达到拓展或重做的目的。
- 重载overload:在一个类中,某个方法在不同的参数下,表现不同的效果,同名不同参。
- this和super
二者都可以当做对象或构造方法使用。 当做对象:this表示当前类的对象,super表示当前类的父类对象 this或super当对象时,只能用在非静态方法中。 当做构造方法:this()表示当前类的无参构造方法,super()表示当前类的父类的无参构造方法 this或super当构造方法时,只能放在另一个构造方法的第一行。 每个继承关系中,如果父类和子类都没有重载构造方法时,子类里都有一个默认无参的构造方法,其中 在调用父类的无参的构造方法
- object类:是所有类的根类。任何类都直接或间接的继承了该类,但没有显式地写出来。所有类都可以调用或重写Object类中的方法。
- 向下转型:父类对象强行保存到子类的变量中。
Object obj=new Object(); Person p=(Person)obj;
- 向下转型:父类对象强行保存到子类的变量中。
Object obj=new Object(); Person p=(Person)obj;
- final:用于修饰属性、方法和类
修饰属性:变量变为常量,不能改变其值。 修饰方法:方法不能被重写。 修饰类:类不能被继承。
- abstract:用于修饰类和方法,表示抽象的。
修饰方法,该方法称为抽象方法,没有方法体,同时该方法所在类一定也要使用abstract修饰成为抽象 类。
- interface:用于定义接口的关键字,代替原本的class。
如果某个抽象类中,全是抽象方法时,可以将该抽象类定义为一个接口。 接口是一个完全抽象类。其中的方法都是公共的public抽象abstract方法,其中的属性都是公共的public 静态static常量final。在jdk1.8后,接口中可以定义默认default方法和静态static方法。
- static:可以修饰方法和属性,表示该方法或属性是静态的,在类加载时保存到内存中,无需对象参数,直接通过类名就能访问。