内部类,局部内部类与匿名内部类创建对象方法

内部类:

定义在A类中的B类就是内部类,B类在A类中的地位和其他成员相同,意思就是说可以相互调用 

优点:通过内部类可以让java间接的实现多继承

创建内部类的对象

方法一
先获取内部类对象再调用方法
Outer out = new Outer();
外部类对象.new 内部类构造方法
Outer.Inner in = out.new Inner();
in.play();

方法二
借助于外部类方法实现内部类方法的调用
Outer out = new Outer();
out.show();
class Outer{
	int age = 10;
	class Inner{//内部类
		int height =  20;
		public void play() {
			age+=10;
  	 System.out.println("Inner - play"+ age);
		}
	}
	
	public void show() {
		System.out.println("Outer - show");
		//相当于再使用Inner
		Inner in= new Inner();
		in.play();
	}
}

局部内部类:

定义:在一个类中方法中的类


作用范围:从定义它开始到所在方法的结束
作用:既保证了代码的私有化,又对代码进行了整理,增加了代码的可读性,操作性

  •  形式:
class 外部类名{
    外部方法(){
        内部类名{
            内部方法(){
                
            }
        }
    }
}

匿名内部类

匿名内部类(对象):定义在一个类方法中的匿名子类 对象,属于局部内部类
匿名内部类的作用:用于类的私有化,只让外部类看

研究匿名对象,匿名子类对象
class Text1 {
	public void text1Method() {
		System.out.println("text1Method");
	}
}

class SubText1 extends Text1 {
	public void text1Method() {
		System.out.println("SubText1-Method");
	}
}

创建匿名对象,完成方法的调用

new Text1().text1Method();

创建匿名子类对象

  •  方法一 使用已有的子类声明子类对象,并调用方法
  •  应用场景:现成的子类可以用很多次,相同的功能需要多次使用的时候
new SubText1().text1Method();
  •  方法二:直接创建没有名字的Text1类的匿名类对象
构成:new 父类的名字/父类接口的名字+()+{
    匿名子类的执行体
};
  •  场景:只能使用一次,使用完立即释放,每次都使用不同的功能
Text1 t = new Text1() {
			// 重写的Text1中的方法
			public void text1Method() {
				System.out.println("匿名");
			}

			// 子类特有的方法
			public void bark() {
				System.out.println("bark");
			}
		};

研究匿名内部类作为参数与返回值

作为参数

// 普通的匿名对象作为参数
	public void textCanshu1() {
		System.out.println(new Text1());
	}

	// 测试匿名内部类对象作为参数
	public void textCanshu2() {
		
		System.out.println(

				new Text1() {
					public String xiuxiuxiu() {
						System.out.println("嘟嘟嘟");
						// com.qinafeng.text.Out$3@4e25154f
						return "dididi";
					}
				}.xiuxiuxiu());
	}

作为返回值

//普通的匿名对象充当返回值
	public Text1 textFanhuizhi1() {
		return new Text1();
	}
//匿名内部类充当返回值
	public Text1 textFnhuizhi2() {
		return new Text1() {
			public void xiuxiuxiu() {
				System.out.println("嘟嘟嘟");
			}
		};
	}

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值