内部类:
1)成员内部类---在外部类的成员位置定义的类
class Outer{ //外部类
private int num = 10 ;
class Inner{//成员内部类//内部类的成员方法
public void show(){
System.out.println(num);
}
}
2)局部内部类---在外部类的成员方法中定义的类
public void method(){
//局部内部类
class Inner{
成员内部类可以存在一些修饰符号:
可以使用private修饰,可以保证数据的安全性;
成员内部类还可以加入static修饰的,
特点: 如果成员内部类都是静态的--成员内部类的这个方法是否静态,无关了,访问外部类成员---->只能是静态的。
非静态的成员内部类中,是不能存在静态方法的
如何直接访问成员内部类的成员方法呢?
将外部类的成员内部类---当做是外部类的成员
直接访问的方式:前提条件:当前的成员内部类是非静态的!
外部类名.内部类名 对象名 = new 外部类对象.new 内部类对象;
局部内部类特点:局部内部类也依然访问外部类的成员变量
class Outer4{
private int num = 100 ;
public void method(){
//局部内部类
class Inner4{
public void show(){
//局部变量
int num2 = 20 ;
System.out.println(num2) ;
System.out.println(num) ;
}
}
//在method方法中,访问show
//创建局部内部类对象.show()
Inner4 inner4 = new Inner4() ;
inner4.show() ;
}
}
//测试类
public class InnerClassDemo4 {
public static void main(String[] args) {
//创建外部类对象
Outer4 outer4 = new Outer4() ;
outer4.method() ;
}
}
权限修饰符
权限修饰 | 在同一个包下的当前类中 | 同一个包下的子类中/无关类中 | 在不同包下子类中 | 不同包下的无关类中 |
private | √ | |||
默认修饰符 | √ | √ | ||
protected:受保护的 | √ | √ | √ | |
public | √ | √ | √ | √ |
其他的修饰符:
static:结合自定义去使用
定义自定义常量结合final
public static final 数据类型 变量名 = 初始化数据;
static还可以在工具类中---->工具类中的构造方法私有化,里面的方法都加入static,类名访问
abstract--->修饰类-->抽象类
还可以在成员方法中定义:抽象类中 =--->public abstract 返回值类型 方法名(参数列表) ;
abstract在接口中定义的抽象方法---abstract可以省略
final结合static一块使用的:
public static final 数据类型 变量名 = 初始化数据;