##访问修饰符权限
同一个类 | 同包有继承 | 同包无继承 | 不同包有继承 | 不同包无继承 | |
private | * | ||||
default | * | * | * | ||
protected | * | * | * | * | |
public | * | * | * | * | * |
- 类:
- 每一个java文件只写一个类,类用 public 修饰
- 成员变量
- private 修饰
- 成员方法
- public 修饰
- 构造方法
- public 修试
内部类
- 在一个类中定义另一个类。
1.内部类访问特点
- 内部类可以直接访问外部类的成员,包括 私有
- 外部类要访问内部类,必须 创建对象
按照内部类在类中定义位置不同,分为:
- 在类的成员位置:
- 成员内部类
- 在类的局部位置:
- 局部内部类
2.成员内部类
- 定义在 类中方法外
- 内部类默认被 public 和 protected 修饰
- 外界创建对象
- 格式
- 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
- Outer.Inner oi = new Outer().new Inner();
- 格式
- 外界创建对象
- 内部类被 private 修饰
- 外部类不能直接调用,需要在外部类中定义一个方法来创建内部类对象
- 然后在测试类中创建外部类对象,通过该对象调用创建内部类的方法
- 内部类被 static 修饰
- Outer.Inner oi = new Outer.Inner();
3.局部内部类
- 定义在 方法里 的类,外界无法直接使用,需要在方法内部创建对象并使用
- 该类可以直接访问外部类的成员,也可以访问方法内的局部变量
4。匿名内部类
-
就是没有名字的 局部内部类,也叫匿名子类对象
-
前提
- 存在一个 类或接口,这里的类可以是具体类也可以是抽象类
-
格式:
new 类名/接口名(){ 重写方法; 自己定义的方法 }
-
本质:是一个继承了该类或实现类该接口的子类匿名对象
Object 类
- 是一切的类的直接或间接的超类
- toString():
- 我们在输出语句中,输出对象的名字,它默认会调用toString()
-
底层的字符串拼接:
- getClass().getName() + “@” + Integer.toHexString(hashCode())
-
作为Object的子类,一般都会重写toString(),用来打印属性的
-
- 我们在输出语句中,输出对象的名字,它默认会调用toString()
- equals():
- 比较两个对象的 地址值 是否一致
- 字符串与字符串比较内容是否一致,要用字符串的equals()
- 作为Object的子类,一般都会重写equals(),用来比较对象的属性是否一致,如果一致就返回true,不一致就返回false