Java内部类

本文介绍了Java中的四种内部类:静态内部类、局部内部类、成员内部类和匿名内部类,详细阐述了它们的特点、用法和访问规则。例如,静态内部类可视为外部类的静态成员,而局部内部类只能在定义它的方法内使用,且对方法的形参和局部变量有特定要求。成员内部类需要先实例化外部类才能创建,而匿名内部类则常用于简洁地实现继承或接口。
摘要由CSDN通过智能技术生成

 Java自定义类可以放在任何一个地方,根据自定义类放的地方不同,叫法也不相同,

包括静态内部类、局部类、成员类、匿名类四种。

静态内部类

作为类的静态成员,在某个类内部定义,。也叫嵌套类。静态内部类,可以被视作一个类的内部静态成员,或静态方法来处理。

public class InnerStatic(	
 	public static void main(String args[]){	
 	
    Document doc= new Document();	
 	doc.Edit();	
 	//在外部类的外部使用静态内部类	
 	Document. Picture pict= new Document.Picture();	
 	pict.picInfor();	
 	 	}	
 }
 class Document{//定义一个外部类	
 	String text;	
 	long count;	
 	//在类内部定义一个静态内部类	
 	public static class Picture{	
 	long start row=500;	
 	long start col=100;
    …………
       }

}
public void Edit(){//在外部类的内部使用内部静态类
      Picture pic=new Picture();
      pic.picInfor();
     }
}

Tips:1.内部类可访问外部类的成员变量与成员方法,甚至是私有的,也可访问。

2.外部类方法可访问内部类方法、成员。

局部内部类

Java允许在一个方法中定义类,定义的类叫局部内部类。

package cn.edu.qvtu.rg ;
   public class Out {
     private int x=1;
   class Inner{
    int x=2;
   void inff(){
     int x=3
System.out.println(x);
System.out.println(this.x);
System.out.println(Out.this.x);
}
   void outff(){
   Inner i=new Inner();
    i.inff();
  }
}

Tip:1.局部内部类可以发外部类的所有成员变量和方法。

2.局部内部类可以访问方法的形参和局部变量,但被局部内部类访问的方法形参、局部变量必须设置为final变量。

3.调用本类用this,外部类用标明类名+this

4.内部类的成员,要有一个是静态,那内部类必须是静态内部类

5.一旦外部类为静态,内部类也需定义为静态。(有访问,访问内部类的外部类)

成员内部类

在一个类内部嵌套另一个类,嵌套在内部的个类直接作为成员使用

public class MInner{	
    public static void main(string args []){
        Outer ou= new Outer();//在外部类的外部使用成员内部类
        Outer. Inner ine= ou.new Inner();	
        ine.Method();
  class Outer{	 	
 	int x= 10,y= 40 	
  class Inner{//定义一个成员内部类
     intx=100,z= 50;	
  public void Method(){	
  System. out.println("Outer. x= "+ Outer. this. x+	13.
"\tInner. x= "+ this. x+ "\ny= "+ y+ "\tz="+ z);

Tip:要先实例化外部类,然后用实例化的外部类对象实例化成员内部类对象(外部类的方法里创建内部类对象)

匿名内部类

 为存在于某个类中且没有名称的类。实际为匿名子类的对象。

创建前提:继承一个类或实现一个接口。

new 类名(父)/接口名 ()

{

    实现抽象方法

}

Tip:在写匿名内部类的大括号后,一定要加个语句号“;”。

new F1(){
   void cxff()
    {
      System.out.println(x);
    }.cxff();


F1 f=new F1()
  void cxff()
    {
     System.out.println(x);}};
    }
};
   f.cxff();

                                                                   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值