码迷,mamicode.com
首页 > 编程语言 > 详细

java 内部类

时间:2018-05-02 02:47:16      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:java   内部类   

内部类
内部类不用建立对象就可以访问外部类的成员变量和函数,包括私有
外部类要访问内部类,必须建立内部类对象
内部类可以私有
当内部类中定义了静态成员,则内部类也应该是静态的
当外部类中的静态方法访问内部类时,内部类也应该是静态的
//main(){
// 在外部类中实例化内部类
//Inner in =new Inner();
// in.i();
//}

局部内部类
    内部类定义在局部时,不可以被成员修饰符修饰,可以直接访问外部类中的成员,不能访问所在局部中的变量,只能访问被final修饰的局部变量
class Outer{
    int i=10;
public void m(){
    syso("-------------");      
    }
public void f(){
    class Inner{
        int j=10;
        public void t(){
            syso("  "+i+"  "+j);
            }           
        }
    Inner in=new Inner();
        in.t();
    }
main(){
    Outer out =new Outer();
        out.f();
}
}//10  10  

静态内部类
静态内部类调用变量   可以使用内部类的变量  可以使用外部类中静态的变量
class Outer{
    int i=10;
    public void f(){syso("f()...");}
    static class Inner{
        int i=20;
    public void i(){syso(i+"  "+this.i+"                    "+Outer.i);}        
            }   
    }
public class kk{
    main(){
    Outer.Inner in=new Outer.Inner();
    in.i(); 
    }       
    }//20  20  10

 成员内部类
    作为类成员存在于类内部,可以访问外部类所有成员方法
    建立在非所属类中时,需要先建立外部类,Outer.Inner in=new Outer().new Inner();
    内部类访问外部类成员变量 Outer.this.x
    class Outer{
        int i=10;
        class Inner{
        int i=20;
        public void v(){syso(i+" "+this.i+" "+Outer.this.i);}       
        }       
    }
public class kk{

// Outer out =new Outer();
// Outer.Inner in =out.new Inner();
// in.v()
Outer.Inner in=new Outer().new Inner();
in.v();
}//20 20 10
匿名内部类
内部类必须是继承一个类或者实现接口。匿名内部类是一个匿名子类对象,而且这个对象是以一个类的形式展现的。
interface Email{
public void Send();
}
public class kk{
//接口不能实例化对象,匿名内部类实现了接口,系统实例化匿名内部类对象传给email
Email email=new Email(){
public void Send(){
syso("send email");
}
};
email.Send();
}//send email

java 内部类

标签:java   内部类   

原文地址:http://blog.51cto.com/11369707/2110268

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!