面向对象的三大特征
封装
思想:将事物包装起来
优点:
1.方便使用
2.保护内部
3.降低耦合度
封装的体现:
变量:封装了一个值
数组:封装了一组数据类型相同的值
对象:封装多个属性的值与可以使用的方法
类:封装着属性,方法,构造函数
Java文件:封装着多个类
方法:封装着一段代码
............
包:
是什么?
一个文件夹
命名规则:
全小写.
com.公司名称缩写/项目名称缩写.Java文件的分类名
eg:
com.qf.service
注意: . 表示下级文件夹
导包:
为什么要导包:
当前java文件中使用别的包下的java文件需要导包
关键字:import
注意:1.如果当前使用类 有当前包下的 也有其他包下的 而且类名相同 此时不建议导包
2.导包时 *表示所有
语法:
import 包名.类名;
书写位置:
类上 包下
访问权限修饰符:
作用:限定内容的使用范围
public 当前项目中可用
protect 在当前包下或继承关系中可用
不写 当前包下可用
private 当前类中使用
建议:
1.使用private修饰属性
2.提供public修饰的get和set方法,用于对属性值的修改和获取
继承
生活中: 晚辈继承长辈物质与精神 代码中: 子类将拥有父类的所有属性与方法,构造函数除外 语法: 访问权限修饰符 class 子类名 extends 父类名{ } 优点: 1.提高代码开发效率 2.方便修改 3.降低耦合度 注意: 1.需要判断两个类是否有继承关系 2.一个类只能拥有一个直接父类(单继承) 3.一个类没有写出继承 那么默认继承object类 4.子类可以拥有自己特有的属性和方法
super关键字
含义:谁调用super所在的方法,super就表示谁的父类对象 作用: 1.当父类属性名/方法名与子类属性名/方法名相同,用于区分 this.属性名/方法名(实参列表);或属性名/方法名(实参列表) 子类的属性或方法 super.属性名/方法名(实参列表) 父类的属性或方法 2.调用父类的属性或方法(this也可以调用) 3.调用父类的构造函数 super(实参列表); 注意: 1.必须在子类构造函数第一行 2.如果子类构造函数中没有调用父类构造函数,系统会自动为其添加super(),调用父类无参构造 如果父类没有无参构造,那么子类的构造函数将会报错
有继承关系时的创建情况
注意:子类对象的堆内存中有父类的属性与方法还有子类特有的属性与方法
多态
概念:一个事物拥有多种形态
事的多态:
重载
同一个类中
方法名相同
形参列表相同
重写
继承关系中
子类方法与父类方法
子类的访问权限修饰符不能小于父类
返回值类型相同
形参列表相同
方法体不同
物的多态:
1.子类可以自动转为父类
语法:
父类名 对象名 = 子类
注意:
子类对象转换为父类对象,该父类对象不能调用子类特有的属性或方法,
子类对象转换为父类对象,调用重写的方法,执行的是子类中的方法(因为重写方法后,父类方法被覆盖).
子类对象转换为父类对象,调用未重写的方法,执行的是继承的父类方法
2.父类对象转换为子类对象(强制转换)
语法
子类名 对象名 = (子类名) 父类名
注意:
父类对象转换成子类对象可能会出现ClassCastException(类型转换异常)
instanceof关键字
作用:判断该对象是否属于该类
语法:
boolean 变量名 = 对象名 instanceof 类名;
如果变量值为true 表示该对象是该类的对象 可以进行转换
如果变量值为false 表示该对象不是该类的对象 不可以进行转换