
定义:内部内在一个类的内部再定义一个类,比如,A类中定义一个B类,则B类相对于A类来说就是内部类,A类相对于B类来说就是外部类。
成员内部类(和成员变量一样定义的类)
public class Outer{
private int id = 10;
public void out() {
System.out.println("这是外部类的方法");
}
// 成员内部类,在外部类的方法外面定义
public class Inner{
public void in(){
System.out.println("这是内部类的方法");
}
// 获得外部类的私有属性~
public void getId(){
System.out.println(id);
}
}
}
//调用方式
public class Test{
public static void main(String[] args){
// 先new外部类
Outer outer = new Outer();
// 通过外部类实例化部类
Outer.Inner inner = outer.new Inner();
inner.in();
// 获取外部类的私有属性
inner.getId();
}
}
静态内部类 (有static关键字修饰)
public class Outer{
private int id = 10;
public void out() {
System.out.println("这是外部类的方法");
}
// 静态内部类,在外部类的方法外面定义,加上static修饰符
public static class Inner{
public void in(){
System.out.println("这是静态内部类的方法");
}
}
}
局部内部类(在方法中定义的类)
public class Outer{
private int id = 10;
public void out() {
System.out.println("这是外部类的方法");
// 局部内部类
class Inner{
public void in(){
System.out.println("这是局部内部类的方法");
}
}
}
}
匿名内部类(没有名称初始化类(new Apple().eat()),不用将实例保存到变量中)
public class Test{
public static void main(String[] args){
// 匿名内部类,没有名字初始化类,不用将实例保存到变量中
new Apple().eat();
// 匿名内部类
new UserService(){
@Override
public void login(){
}
}
}
}
class Apple{
public void eat(){
System.out.println("eat");
}
}
interface UserService{
void login();
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)