内部类
class OutClass{
int a = 1;
class InClass{
int a = 2;
void test(){
int a = 3;
System.out.println(a);//当前方法的,3
System.out.println(this.a);//当前类对象的,2
System.out.println(OutClass.this.a);//OutClass类当前对象的,1
}
}
class Main{
pubic static void main(String[] args){
OutClass out = new OutClass();
OutClass.InClass in = out.new InClass();//用外部类对象来调用来创建对象
}
}
class OutClass{
static class InClass{
}
}
OutClass.InClass in = new OutClass.InClass();//由于是静态所以不需要外部类对象来引,直接用类调用即可
class OutClass{
int a = 1
static int b = 2;
static class InClass{
int x = new OutClass().a;//外部类普通的变量需要创建对象引用,就像外面的类去引用一样
int y = b;//对于外部类的静态变量就可以直接使用
}
}
new 父类的构造器 或 接口() {
内部写的代码(在new时候就会自动执行)
}
class Animal{
void move(){
System.out.println("移动了");
}
}
class Dog extends Animal{
void move(){
System.out.println("跑走了");
}
}
class bird extends Animal{
void move(){
System.out.println("飞走了");
}
}
class Body{
void sport(Animal animal){
animal.move();
}
}
Animal dog = new Dog();
Animal bird = new Bird();
Body body = new Body();
body.sport(dog);
body.sport(bird);//我们可以实实在在的建一个类像dog,bird这样放进去
body.sport(new Animal(){//还可以使用匿名内部类,用父类构造器创建对象,一次性的类
System.out.println("飞走了");
}
);
枚举
[修饰符] enum 定义的名称{
常量1,常量2,常量3,······
}
enum Season{
SPRING,SUMMER,AUTUMN,WINTER
}
final class Season extends Enum //定义一个类继承Enum
{
public static final Season SPRING;
public static final Season SUMMER;
public static final Season AUTUMN;
public static final Season WINTER;
private static final Season ENUM$VALUES[]; //定义了四个静态常量,和一个存储所有常量的数组
private Season(String s, int i) //私有化了构造器所以外面不能再创建对象,只能用此类已经定义的常量
{
super(s, i);
}
public static Season[] values() //通过values可以获取数据当中的所有的常量
{
Season aseason[];
int i;
Season aseason1[];
System.arraycopy(aseason = ENUM$VALUES, 0, aseason1 = new Season[i = aseason.length], 0, i);
return aseason1;
}
public static Season valueOf(String s) //把字符串转成枚举类型,然后储存
{
return (Season)Enum.valueOf(first/Season, s);
}
static
{
SPRING = new Season("SPRING", 0); // 初始化常量,最后都放到数组
SUMMER = new Season("SUMMER", 1);
AUTUMN = new Season("AUTUMN", 2);
WINTER = new Season("WINTER", 3);
ENUM$VALUES = (new Season[] {
SPRING, SUMMER, AUTUMN, WINTER
});
}
}