JAVA学习第13天

内部类

概念:在类中定义的类

外部类:相对于内部类而言,在外部的类

        注意:

                1.外部类不能使用static修饰

                2.外部类的访问权限修饰符不能使用private修饰

匿名对象:没有对象名的的对象

分类

作用:为外部类提供属性与方法

成员内部类

位置:类中方法外

语法

        访问权限修饰符 class 类名{

}

注意:成员内部类不能使用静态成员(静态属性,静态方法,静态代码块)

创建对象:

        外部类类名.内部类类名 对象名 = 外部类类名.new 内部类类名(实参列表);

 特殊情况:

        1.当外部类属性名与内部类属性名相同时如何区分

                this.属性名表示内部类属性

                外部类.this.属性名 表示外部属性

        2.当外部类方法与内部类方法相同时如何区分

                this.方法名(实参列表)     内部类方法

                外部类.this.方法名(实参列表)     外部类方法

例:

package com.qf.demo03;
//OutClass:外部类
public class OutClass {
	//InClass:内部类
	public class InClass{
		
	}
}

静态内部类(就是用static修饰的成员内部类)

位置:类中方法外

语法

        访问权限修饰符 static class 类名{

}

注意:外部类可以定义的,静态内部类都可以定义

创建对象:

        外部类类名 .内部类类名 对象名 = new 外部类类名.内部类类名(实参列表);

特殊情况:

        1.当外部类属性名与内部类属性名相同时如何区分

                当属性为静态属性

                        内部类类名.属性名表示内部类属性

                        外部类类名.属性名表示外部类属性

                当属性为非静态属性

                        内部类中不能直接使用外部类非静态成员

例:

package com.qf.demo06;

import java.io.Serializable;

public class OutClass {
	private String text01 = "外部类非静态属性";
	private static String text02 = "外部类静态属性";
	
	public static class InClass extends Object implements Serializable{
		private String text01 = "内部类非静态属性";
		private static String text02 = "内部类静态属性";
		public InClass() {
			
		}
		public void test01() {
			System.out.println(this.text01);//内部类属性
			System.out.println(InClass.text02);//内部类静态属性
			System.out.println(OutClass.text02);//外部类静态属性
			//静态内部类中不能直接使用外部类非静态成员
			//System.out.println(OutClass.this.text01);
		}
		public static void test02() {
			
		}
		{
			
		}
		static {
			
		}
	}
	
}

局部内部类

位置:方法内

语法

        class 类名{

}

创建对象

        内部类类名. 对象名  = new 内部类类名(实参列表);

注意:只能在定义该类的方法中使用

匿名内部类(*)

位置:值或实参中

语法

        父类名/父接口名 对象名 = new 父类名/父接口名(){

                        属性

                        方法

                        代码块

}

特点:

        1.一个匿名内部类只能创建一个对象

优点:便于书写

注意:

        1.匿名内部类不能定义静态成员

        2.匿名内部类必须重写所有抽象方法

        例:

package com.qf.demo08;

public class Button {
	private OnClikeListener listener;
	//设置点击后需要执行的事件
	public void setListener(OnClikeListener listener) {
		this.listener = listener;
	}
	//按钮按下的方法
	public void down() {
		listener.click();
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值