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