Java内部类的详细描述

目录

 1.内部类基本概念

2.内部类分类

2.1 有名内部类

2.2 匿名内部类  

3.匿名内部类的作用

4.生成的外部类文件

4.1 有名外部类

4.2 匿名外部类


 1.内部类基本概念

内部类: 所谓内部类就是在一个类内部进行其他类结构的嵌套操作。    

package 内部类;

public class Body {
	
	class Heart{
		public void work() {
			System.out.println("正在跳动.....");
		}
	}

 

2.内部类分类

  2.1 有名内部类

package 内部类;

//外部类
public class Body {
	
        //有名内部类
	class Heart{
		public void work() {
			System.out.println("正在跳动.....");
		}
	}

public static void main(String[] args) {
	Body body = new Body();
	Heart heart = body.new Heart();//内部类
	heart.work();

   说明:全局有名内部类的使用方式类似于全局变量;局部有名内部类的使用方式类似局部变量——它们都有固定的使用范围

 

 

2.2 匿名内部类  

由于没有类名而不能单独存在,定义匿名内部类的同时须直接实例化该类,其语法格式如下:     

new 父类构造器([参数列表])|接口(){                 

           //匿名内部类类体     

}

//匿名内部类创建的对象一定是普通类或抽象类的子类对象,一定是接口实现类对象
static Mammal mammal = new Mammal(){
	@Override
	public void move() {
		System.out.println("靠鳍游动......");
	}
};


//接口
package 内部类;

public interface Mammal {

	public void move();
}

 

3.匿名内部类的作用

匿名内部类常用于重写父类或者接口中的方法,当然也可以定义新的属性和方法,此时该方法上转型对象无法调用

public static void main(String[] args) {
        Mammal mammal = new Mammal(){
	    @Override
	    public void move() {
	        System.out.println("靠鳍游动......");
	    }
			
	    public void eat() {
		System.out.println("正在吃......");
            }        
        };

//匿名内部类常用于重写父类或者接口中的方法,当然也可以定义新的属性和方法,此时该方法上转型对象无法调用
	new Mammal() {
	    @Override
	    public void move() {
		    System.out.println("靠鳍游动......");
	    }
			
	    public void eat() {
		    System.out.println("正在吃......");
	    }
        }.eat();//指明输出新方法eat
		
	new Mammal() {
	    @Override
	    public void move() {
		    System.out.println("靠鳍游动......");
	    }
			
	    public void eat() {
		    System.out.println("正在吃......");
	    }
        }.move();//输出新方法move

 

4.生成的外部类文件

4.1 有名外部类

有名内部类编译后生成外部类$内部类.class文件 (文件--右键--properties--文件)

class A {
		
	}
	//有名内部类编译后生成外部类$内部类.class文件 (文件--右键--properties--文件)

4.2 匿名外部类

匿名内部类编译后生成外部类$内部类.class文件

Object o = new Object () {
		
};
	
Object object = new Object () {
		
};
//匿名内部类编译后生成外部类$内部类.class文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值