访问控制符
访问控制符 public、protected、不填(default / friendly)、private
访问范围 | 工程 | 父子类(不同包) | 同包 | 自己类 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | × | √ | √ | √ |
default | × | × | √ | √ |
private | × | × | × | √ |
访问控制符:修饰词 类名/方法名/变量名
封装
- 成员变量私有化
- 保证了属性的私密性、安全性
类加载
类加载:将类的字节码信息加载到JVM方法区中的过程
什么时候类加载:类使用之前(整个程序运行中,类加载只有一次)
- new 对象
- new 子类对象 ,父子类依次加载
- 调用类的静态成员(方法、属性)
代码块
{
//代码块:在调用任何构造器之前都会被调用
}
static:静态的
和类相关、不需要对象
- 静修饰成员变量
存在方法区中
只有一份,所有这个类的对象共用的
通过 类名.属性名 调用
有类的时候就有静态成员变量 - 修饰方法
通过 类名.方法名() 调用
类加载的时候加载,必须手动调用
不可以直接调用普通的成员变量和方法 - 修饰代码块
类加载的时候调用
需要加载大量资源的时候
final:最终的
最终的,不能被修改的
- 修饰变量( 成员变量 / 局部变量)
不能修改->常量
字面量:1 2 3.14 true false null
在使用之前必须初始化
final成员变量:初始化。1.每个构造器中 2.代码块中 3.声明的同时 - 修饰方法
不能被子类中重写 - 修饰类
没有子类,不能被继承 - String
static + final
修饰成员变量 -> 静态常量
- 怎么调用
类.常量 - 在哪初始化
声明的同时、静态代码块中
通常用来定义固定的全局选项,通常是int类型
abstract:抽象的
- 修饰类(抽象类的意义:被继承)
抽象类 abstract修饰的类
可以有抽象方法的类
不能实例化,靠子类来实例化
可以有构造器,提供给子类默认调用的 - 修饰方法
抽象方法:不能实现的方法,不知道具体实现。没有方法体,靠子类开实现/重写的
有抽象方法的类,一定是抽象类
interface:接口(一个特殊的抽象类)
- 没有构造器,不能实例化
- 接口的意义:被实现 - implements - 扩展功能
- 方法默认:public abstract
- 变量:public static final
类与接口
- 类 - 类:extends 1-1
- 类 - 接口:implements 1-n
- 接口 - 接口:extends 1-n
A extends B,C
D implements A - 接口 - 类:没有关系
内部类
内部类:一个类的内部定义了一个类
- 成员内部类 - 成员变量/成员方法
- 静态内部类
- 匿名内部类 - 重要,重要,重要
- 局部内部类 - pass
public class OuterA{
private int b;
private static int c;
// 成员内部类 - 成员变量 / 成员方法
protected class InnerA{
private int a;
public void m1(){
b = 0;
}
}
// 静态内部类 - 静态方法 / 静态属性
public static class InnerB(
private int a;
public void m1(){
c = 0;
}
)
}
public class Demo3{
public static void main(String[] args) {
// 成员内部类的实例
OuterA outerA = new OuterA();
OuterA.InnerA innerA = outerA.new InnerA();
innerA.m1();
// 静态内部类的实例
OuterA.InnerB innerB = new OuterA.InnerB();
}
}
public class Demo4{
public static void main(String[] args){
// 匿名内部类:抽象类、接口
// 内部方法较少、使用一次
final int a = 0;
Soo soo = new Soo() { // 匿名内部类 - 相当于实现了Soo接口
public void m1(){
System.out.println("soo 的 m1" + a);
}
};
soo.m1();
}
}
interface Soo{
void m1();
}
快捷键:( eclipse)
- Alt + / :自动匹配/补全
- Ctrl + Shift + o :自动导包
- Ctrl + 1 :快速解决方案
- Ctrl + / :自动注释
- Ctrl + Shift + / :注释
- Ctrl + Shift + \ :解注释
- Alt + 上/下 :快速移动
- Ctrl + F11 :快速运行