类和对象
类由属性,方法,构造方法和其他内容(可以是代码块**、静态代码块、内部类)构成。
其中方法的格式如下:
访问修饰符 返回值类型 方法名(形式参数列表){
Java语句;… … … //方法体
}
构造方法
构造方法的格式如下:
[修饰符] 类名(形参列表){
//n条语句
}
构造方法的四要点:
- 构造器通过new关键字调用!!
- 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。
- 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加!
- 构造器的方法名必须和类名一致!
Object类
Object类是所有的类的直接或间接父类。
- 常用方法
1.重写toString方法
作用:用于显示对象的属性值,默认返回显示的是:完整的包名+类名+@+十六进制的整数。
2.重写equals方法
作用:用于去比较两个对象的属性值是否相同。
包机制
声明包:使用 package关键字
导入包:使用 import关键字
- 要点:如果导入两个同名的类,只能用包名+类名来显示调用相关类:
JDK常用的包 - java.lang (不需要手动导入,默认导入java.lang包)
( 包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。) - java.awt
( 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。) - java.net
(包含执行与网络相关的操作的类。) - java.io
(包含能提供多种输入/输出功能的类。) - java.util
( 包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。)
封装
意义:提高程序的安全性
访问权限:
封装的步骤:
1.将属性进行private私有化
2.提供公有的取值,赋值方法
3.在赋值的方法中进行判断
JavaBean规范:
- 类使用public修饰
- 属性使用private封装
- 提供公有的getter,setter方法
- 提供无参构造方法/构造器
继承
意义:提高代码的复用性
使用extends关键字实现继承
方法重写(override)
目的:父类提供的方法,不能满足子类的需求,子类就可以对方法进行重写 (对方法体进行重新编写)。
实现的条件:
1.在子类中
2.方法的名称、参数的类型、个数和顺序与父类中的方法完全相同
方法重载(overload)
实现的条件:
1.同一个类中
2.方法的名称相同
3.参数不同,类型是,个数,顺序不同
4.与返回值类型和访问权限无关
super关键字
作用:
- 可以用于区分父类和子类的同名属性
- 调用父类的属性或父类的方法,super也可以省略不写
- 调用父类的构造方法 super(), super(…),要求必须是子类构造方法中第一句代码
多态
意义:提高程序的可扩展性和可维护性
概念:同一个方法调用,由于对象不同可能会有不同的行为。
实现多态的步骤:
1.继承父类
2.重写子类
3.父类引用,指向子类对象
对象转型:
- 向上类型转换:子类转成父类
- 向下类型转换:父类转成子类
抽象
- 抽象方法
概念:使用abstract修饰的方法,没有方法体,只有声明。 - 抽象类
概念:包含抽象方法的类就是抽象类。
特征:
抽象类不能创建对象 ,不能 new
可以含有0个或多个抽象方法
要点:
1. 抽象方法和抽象类均必须用abstract来修饰。
2. 抽象方法没有方法体,只需要声明不需实现。
3. 抽象类可以包含属性、方法、构造方法。
4. 抽象类不能实例化,及不能用new来实例化抽象类,只能用来被子类调用。
5. 抽象类只能用来继承。
6. 抽象方法必须被子类实现。抽象类的子类必须覆盖所有的抽象方法才能被实例化,否则还是抽象类
接口
定义:
- 接口中可以包含属性–>静态常量
- 接口中可以包含方法–>抽象方法
- 接口中可以包含非抽象方法–>default关键字,static关键字(JDK1.8)
- 接口与接口的关系–》继承 -->java中的接口是多继承的
- 类与接口的关系–>实现 implements
- 即有继承,又有实现,谁在前谁在后?extends在前,implements在后
- 如果父类与接口中有同名方法,不是完全相同的方法,要求父类与接口中的方法,在类中必须构成重载
面向对象总结的思维导图
附: