匿名对象~~内部类

一、匿名对象概念


匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。


二、匿名对象特点


1.创建匿名对象直接使用,没有变量名。


猫类:


public class Cat {
	public void play(){
		System.out.println("小猫咪爱玩耍");
	}
}

测试类:


public class Test04 {
	public static void main(String[] args) {		
		//调用匿名对象的方法时直接.就可以
		new Cat().play();		
	}
}

2.在没有指定其引用变量时,只能使用一次。若还是按之前的调用,则是又创建了一个对象。


public class Test04 {
	public static void main(String[] args) {		
		//调用匿名对象的方法时直接.就可以
		new Cat().play();
		//若再次调用则是不同的对象了
		new Cat().play();
	}
}

3.可以作为方法接受的参数、方法返回值使用。


public class Test04 {
	public static void main(String[] args) {		
		//将匿名对象作为参数传递给method方法,返回类型为Cat,调用对象方法play();
		method(new Cat()).play();
	}
	//猫玩耍的类,返回值为Cat类
	private static Cat method(Cat c) {
		return c;
	}
}

三、内部类


内部类:将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类,通俗的说就是在类里面创建类,也就是一个事物里面包含另一个事物,其他的类是外部类。


1.成员内部


定义在外部类中的成员位置,可通过外部类对象进行访问。


class 外部类{
        修饰符 class 内部类{
                 //代码
        }
}

访问方式:外部类名.内部类名  变量名=new  外部类名().new 内部类名();


外部类:Body类;内部类:Heart类。


class Body {
	class Heart{
		public void jump(){
			System.out.println("心跳");
		}
	}
}

测试类:


public class Test03 {
	public static void main(String[] args) {
		//实例化外部类对象
		Body.Heart bh=new Body().new Heart();
		//调用类中方法
		bh.jump();
	}
}

2.局部内部类


定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访问


class 外部类{
      修饰符 返回值类型 方法名(参数) {
              class 内部类{
                      //代码
              }
      }
}

局部内部类:


class Party {
	//外部类的eat方法
	public void eat(){
		//局部内部类Food
		class Food{
			//局部内部类中的make犯法
			public void make(){
				System.out.println("在聚会上制作食物");
			}
		}
		//匿名对象类调用方法
		new Food().make();
	}
}

测试类:


public class Test03 {
	public static void main(String[] args) {
		//实例化局部内部类
		Party p=new Party();
		p.eat();
	}
}

3.匿名内部类


特点:简化问题:定义实现类、重写方法、建立实现类对象、调用方法


接口:


public interface Play {	
	//定义接口的抽象方法
	public abstract void play();
}

测试类:


public class Test05 {
	public static void main(String[] args) {	
		//创建Play子类对象,即new
		new Play(){
			//重写子类方法
			public void play(){
				System.out.println("我喜欢出去玩");
			}
		//调用子类方法
		}.play();	
	}
}

小结:


匿名对象使用比较多,主要是为了简化问题,简化代码。

成员内部类、局部内部类主要用于类中有类的情况。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值