对象和封装
一、Java语法基础(数据类型,运算符,语法结构,数组.)
二、Java面向对象(封装,继承,多态,抽象..]
三、Java高级特性(包,类)
四、JavaEE开发(企业级web应用)
五、Java框架技术(快速的开发平台). Y2
Java面向对象:
类和对象:
1:创建类
2:定义属性,方法
3:实例化对象
4:使用对象调用属性。方法
项目结构:
src:存放源代码
Jre: java运行环境
关系: JDK --> JRE --> JVM(Java虚拟机)
构造方法
特点:
1:与类同名
2:无返回值类型
3:系统会提供-个无参构造
作用: 构建对象
二、方法重载
在同一个类当中,方法名相同,参数不同称为方法重载
三、构造方法重载
作用:在构建对象的同时,传递属性值
快捷键: alt+shift+s选↓
定义构造方法: Generate Constructor .
封装get/set方法: Generate Getters/Setters
1:基本数据类型: byte,shortint,long.float,double.char,boolean
2:引用数据类型:类,数组。接口
this: 代表当前对象的引用
面向过程编程: C语言为代表
面向对象编程:面向真实的事物编程,以现实当中思路去解决程序当中的问题
,编程方式更贴近现实。
封装:保证属性安全
封装特点:隐藏实现的细节,提供操作的接口
static:静态
在类被加载时,优先加载静态修饰的块,方法,属性
静态修饰的方法和属性,称为类方法和类属性
静态方法和静态属性独立与任何对象,可以直接用类名引用
静态属性:
static修饰的属性称为类属性,独立与任何对象
没有被static修饰的属性称为实例属性,每一个实例都有
自己特有空间
使用场景:
1:在对象之间共享值时
2:方便访问变量时
静态方法:
static修饰的方法称为静态方法/类方法,独立与任何对象
可以直接使用类名引用,类名.方法名
概念:
在静态方法当中不能直接引用非静态(实例)属性和方法
在实例方法当中可以直接引用静态方法和属性
在静态方法当中如何引用实例方法:
1:实例化对象,使用对象引用
2:将实例方法转成静态方法
静态块:
static{
}
特点:
1:优先执行
2:执行一次
多态
多种形态,同样的功能,不同的执行者,得到不同的结果
多态三要素:
一、必须要有继承
二、必须要有方法重写
三、必须要有向上转型
-------------------------------------------------------------------------------
方法重写 override:
场景:父类方法无法满足子类需求时,可将方法重写,
方法重写也称 方法覆盖
特点:
1:子类重写父类的方法
2:返回值,方法名,参数都一致
3:访问修饰符不能严于父类
访问修饰符:private ->friendly->protected->public
向上转型:
场景:父类无法实例化对象时就一定会要使用
语法:父类 父类对象 = new 子类();
前期绑定(编译期):父类 父类对象;
后期绑定(执行期):new 子类();
ps:能够调用的是父类的方法,
真正执行的是子类的方法
instanceof:判断对象所属类型,返回布尔值
语法:对象 instanceof 类
向下转型:
子类 子类对象 = (子类)父类对象;
向下转型后,可以调用子类特有的方法
-------------------------------------------------------------------------------
方法重写:子类重写父类方法,返回值,方法名,参数都一致,
访问修饰符不能严于父类。
方法重载:同一个类,方法名相同,参数不同(类型,数量,顺序)
向上转型:父类的引用指向子类对象
父类 父类对象 = new 子类();
目标:抽象方法,抽象类,接口
抽象方法特点:
1:使用 abstract 进行修饰
2:没有方法体(没有方法实现)
3:抽象方法必须定义在抽象类或者接口当中
4:子类必须重写父类的抽象方法
5:不能使用 private,final,static 关键字
抽象类:
1:使用abstract 进行修饰
2:抽象类不能被实例化
3:抽象类当中有构造方法,抽象方法,普通方法
4:子类必须重写父类的抽象方法,如不能实现继续抽象
5:不能使用 final 关键字
final:最终
修饰类:类不能被继承
修饰方法:方法不能被重写
修饰属性:属性变成常量
继承
符合is-a关系
使用extends关键字
代码复用
Object: 对象
1:一个类没有明确继承某个类时,默认继承Object
2:所有类的父类
修饰符:
类:
写: public
不写: default
方法和属性:
公共的: public 所有类
受保护的: protected 同包,同类,不同包的子类
默认的: friendly 同包, 同类
私有的: private 本类
方法重写的规则
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类
super关键字来访问父类的成员
super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访向子类的private成员
抽象类和抽象方法
抽象类不能被实例化
抽象类可以有0~多个抽象方法
非抽象子类必须重写父类的所有抽象方法
final修饰符
修饰的类,不能再被继承
修饰的方法,不能被子类重写
修饰的变量将变成常量,只能在初始化时进行赋值
接口: interface
类与类之间的关系:
子类-父类:继承关系
子类-接口:实现关系
类的属性为另-个的对象:依赖关系
在一个类当中实例化另一个类的对象:关联关系
实现关系:
类继承-个父类,实现多个接口,接口
可以继承多个接口、
类-类:单继承
类-接口:多实现
接口-接口:多继承
接口当中所有的方法为公共抽象方法
接口当中所有的书写为公共静态常量
接口和抽象类的异同点:
共同点:
1:都有抽象方法
2:都不能实例化对象
3:派生类都必须重写抽象方法
不同点:
1:继承父类关键字extends,
实现接口的关键字implements
2:单继承,多实现
3:抽象类当中有普通方法,抽象方法,
接口当中默认公共抽象方法