java基础知识:面向对象下篇
包:
作用:
管理代码结构和分类,可以避免类名冲突
命名规范:
域名倒写 去掉www 后面可以跟上模块名
关键字:package
如:
package cn.qy.controller;
注:
语句必须放在java文件最上面第一句
导包:
关键字:import
如:
import java.util.Arrays;
注意:
导包语句必须放在类上,并且在package语句下面
*表示通配符
除了lang包 其他包都要导包
lang包不用导包 可以直接用 但其下的子包需要导包
static
jvm优先加载
static可以修饰:
1.成员变量
2.内部类
3.普通方法
4.代码块
不可以修饰:
1.局部变量
2.外部类
3.构造方法
方法的调用:
有static修饰
同一个类中,方法名(参数);
不同类中 类名.方法名(参数);
没有static修饰
创建类的对象,对象.方法名(参数)
注:
1.被static修饰的成员属于类,不属于单个这个类的某个对象(理解为类的属性),被类中所有对象所共享,可以并且建议通过类名调用(虽然对象名也可调用,但是不推荐使用创建对象,对象.方法名方式调用)。
2.被static修饰的成员属于静态成员变量 静态变量存放在java内存的静态区域
static使用场景:
1.工具类方法中 Arrays中的方法
2.全局常量static修饰, 全局常量一般结合public static final 来修饰。
this
简单描述:指当前对象
官方描述:谁调用该方法,this所指对象便是谁
应用场景:
1.调用构造方法(常用);
2.解决局部变量和全局变量之间的二义性(常用)
3.作为参数传参
4.作为返回值返回
super
super指向的是父类的地址,可以看成时父类的对象
可以在子类使用super调用父类中可访问的字段、方法、构造方法
super可以调用父类的构造方法
final
final修饰符 表示最终、不可拓展、不可改变的
可以修饰:
外部类:不能被继承
普通方法:不能被重写
局部变量:不能二次赋值
成员变量:不能二次赋值 并且必须初始化
应用数据类型的转换
语法:
数据类型 对象名 = (数据类型)需要强转的对象
判断对象是否能强转:
1.获取运行时的类名 getClass().getName();
2.instanceof 关键字 如:对象名 instanceof 类名
代码块
局部代码块
定义在方法中,按照方法中的代码从上到下
构造代码块
定义在类结构中,每次创建类的对象都会执行,因为编译时会将构造代码块中的代码放在构造方法中
静态代码块
由static修饰的代码块,执行优先级高于主方法
组合和继承
组合关系:
松耦合关系 运行时期决定
继承关系:
紧耦合关系 编译时决定
枚举
和类相似的一种结构,会产生独立的字节码文件,列举几个固定不变的值
语法:
enum 枚举名称{
值1,值2...
}
调用方式:枚举名.值
抽象类
由abstract修饰的类就叫抽象类
子类如果继承了抽象类 需要重写抽象类中的所有抽象方法
abstract还可以可以修饰:
字段 普通方法 抽象方法 构造方法
普通方法和字段通过子类对象可以调用
抽象方法没有方法体 由abstract修饰
虽然由构造方法 但是不能创建对象
作用:通常用来作为模版类
注:抽象类也满足多态
接口
结构和类相似的一种结构,没有构造方法
定义语法:
interface 接口名称{
}
作用:
通常用来作为规范 或者 定义全局常量
接口中可以有:
字段 默认由public static final修饰
方法 默认由public abstract修饰
类和接口之间的关系 实现
类可以去实现一个或者多个接口
实现接口以后必须重写接口中的所有抽象方法
接口和接口之间的关系 继承
接口可以多继承、多重继承
一个类可以实现多个接口 只能继承一个类
当一个类继承了一个类并且实现了接口 此时继承关系要写在实现的前面
注:接口也满足多态
内部类
在类内部中的类
匿名内部类的写法
new 接口名称(){
重写接口中的所有方法
};