当当网网站建设步骤,网站重新建设的通知,秦皇岛网站制作定制,做酒的网站有哪些内部类 内部类就是在一个类中定义一个类#xff0c;#xff08;在A类中定义一个B类#xff0c;B类就被称为内部类#xff09; 格式#xff1a;public class 类名{ 修饰符 class 类名{} } 如#xff1a;public class Outer{ public class Inner {} } //内部类可以访问外部…内部类 内部类就是在一个类中定义一个类在A类中定义一个B类B类就被称为内部类 格式public class 类名{ 修饰符 class 类名{} } 如public class Outer{ public class Inner {} } //内部类可以访问外部类的成员包括私有。 //外部类要访问内部类的成员必须创建对象。
public class Outer{private int num 10;public class Inner{public void show(){System.out.pirntln(num);//内部类可以直接访问外部类的成员包括私有}}public void method(){Inner i new Inner();//外部类想要访问内部类需要创建对象i.show();}
} 按照内部类在类中定义的位置不同可以分为两种在类的成员位置被称为成员内部类在类的局部位置方法位置被称为局部内部类。 //成员内部类创建对象格式外部类名 . 内部类名 对象名 外部类对象 . 内部类对象(Outer.Inner oi new Outer().new Inner();)
public class Outer{private int num 10;private class Inner{public void show(){System.out.println(num);}}public void method(){Inner i new Inner();//在method的方法中创建Inner内部类的对象并调用方法i.show();}
}
//测试类
public class InnerDemo{public static void main(String[] args){Outer o new Outer();//在测试方法中创建外部类对象o.method(); //外部类对象调用method方法间接调用内部类对象和方法}
}
//局部内部类是在方法中定义的类所以外界无法直接使用需要在方法内部创建对象并使用该类可以直接访问外部类成员也可以访问方法内的局部变量。
public class Outer {private int num 10;public void method(){int num2 20;//在方法中定义一个成员变量class Inner{public void show(){System.out.println(num);System.out.println(num2);}}Inner i new Inner();//在方法中定义对象并调用i.show();}
}
//测试类
public class OuterDemo{public static void main(String[] args){Outer o new Outer();//定义外部类对象o.method();//外部类对象调用方法间间访问到局部内部类的对象i调用的show方法}
} 匿名内部类局部内部类的一种 匿名内部类本质是一个继承了该类或者实现了该类接口的子类匿名对象。 格式new 类名或者接口名{ 重写方法 }; 如new Inter(){ public void show(){} }; //最后分号不要缺少
//定义一个接口
public interface Inter {void show();
}
//在外部类中写局部内部类然后写匿名内部类
public class Outer{public void method(){new Inter(){Overridepublic void show(){System.out.println(匿名内部类);}};//现在本质是一个对象new Inter(){Overridepublic void show(){System.out.println(匿名内部类);}}.show();//匿名内部类对象调用show方法可以多次调用//因为定义的是个接口的实现类对象Inter i new Inter(){Overridepublic void show(){System.out.println(匿名内部类);}};i.show();}
}
//定义一个测试类
public class OuterDemo{public static void main(String[] args){Outer o new Outer();o.method();}
}
//创建跳高接口
public interface Jumpping{void jump();
}
//接口的操作类里面有一个方法方法的参数是接口名
public class JumppingOperator{public void method(Jumpping j){j.jump();}
}
//测试类
public class JumppingDemo{public static void main(String[] args){//需求创建接口操作类的对象调用method方法JumppingOperator jo new Jumpping Operator();Jumpping j new Cat();//需要先创建实现类然后在测试类中创建实现类对象jo.method(j);//调的是接口名因为接口不能直接引用因此需要定义一个实现类对象//如果不想创建实现类再定义对象可以使用匿名内部类本质是一个对象jo.method(new Jumpping(){Overridepublic void jump(){System.out.println(猫可以跳高了); }});}
}