Java常用类
编译后生成独立的字节码文件
内部类可以之间访问外部类的私有成员
疑问
访问修饰符
- 
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
 - 
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
 - 
public : 对所有类可见。使用对象:类、接口、变量、方法
 - 
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
 
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。
多态
父类引用变量可以指向子类对象
注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法
1、成员内部类
成员内部类,定义在外部类中的成员位置,与类中的成员变量相似,可以通过外部类对象进行访问
定义格式:
class 外部类{
    修饰符 class 内部类{
        //XXX
    }
}
访问方式:
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
内部类可以使用 private 或 protected 来修饰,如果你不希望内部类被外部类访问可以使用 private 修饰符
2、静态内部类
静态内部类可以使用 static 关键字定义,静态内部类我们不需要创建外部类来访问,可以直接访问它:
OuterClass.InnerClass myInner = new OuterClass.InnerClass();
静态内部类无法访问外部类的成员
3、局部内部类
局部内部类,定义在外部类方法中的局部位置,与访问方法中的局部变量相似,可以通过调用方法进行访问
定义格式:
class 外部类 {
    修饰符 返回值类型 方法名(参数){
        class 内部类 {
            //XXX
        }
    }
}
访问方法
在外部类方法中,创建内部类对象进行访问
代码实例:
//定义类
class Party {    //外部类,聚会
    public void puffBall(){    // 吹气球方法
        class Ball {    // 内部类,气球
            public void puff(){
                System.out.println("气球膨胀了");
            }
        }
        //创建内部类对象,调用puff方法
        new Ball().puff();
    }
}
//访问内部类
public static void main(String[] args) {
    //创建外部类对象
    Party p = new Party();
    //调用外部类中的puffBall方法
    p.puffBall();
}
4、匿名内部类
临时定义某一指定类型的子类
格式:
new 父类或接口() {
    //方法重写
};
//已经存在的父类:
public abstract class Person{
    public abstract void eat();
}
//定义并创建该父类的子类对象,并用多态的方式赋值给父类引用变量
Person  p = new Person(){
    public void eat() {
        System.out.println(“我吃了”);
    }
};
//调用eat方法
p.eat();
                    
                
                
            
        
浙公网安备 33010602011771号