内部类与内部接口

1,用法:

public class Line  //直线类,外层类型

{  ……
    

     class Point{
  //点类,内嵌类型

       ……
     
      }
   
    ……

}


2,作为类型的特性:

1)内嵌类型不能与外层类型同名。

2)内部类中可以声明成员变量和成员方法。

3)内部类可以继承父类或实现接口。

4)内部类可以声明为抽象类或内部接口,但必须被其他内部类继承或实现


3,作为成员的特性

1)使用点运算符“.”引用内嵌类型:外层类型.内嵌类型  ( Line.Point )
2)与其他外层类型彼此信任,能访问对方的所有成员

3)具有类中成员的4种访问控制权限。
4)内部接口总是静态的,可声明内部类是静态的,静态内部类能够声明静态成员,但不能引用外部类的实例成员。非静态内部类不能声明静态成员。

//内部类中外部类的一个成员,它的使用方式和其它成员(变量或方法)类似,,
//注意,内部类可以访问外部类的私有成员

public class Line {
	int length;
	private Point start;
	private Point end;
	
	static int val;
	
	//非静态内部类
	class Point{
		private int x;
		private int y;
		public Point(int x, int y) {
			this.x = x;
			this.y = y;
		}
		public Point() {
			super();
			// TODO Auto-generated constructor stub
		}
		public void abc(){
			start=null;
		}
	}

	//静态内部类
	static class A{
		int a=5;
		public void aa(){
			System.out.println("1111");
		}
	}
	
	interface Direction{
		public static final int UP=1;
		public static final int DOWN=2;
		public static final int LEFT=3;
		public static final int RIGHT=4;
	}
	
	@Override
	public String toString() {
		return "Line [length=" + length + ", start=" + start + ", end=" + end
				+ "]";
	}
	
	
	public void fun(){
		int x = Direction.DOWN;
	}
}

public class Demo {
	@SuppressWarnings("unused")
	public static void main(String[] args) {
		
		//1非静态内部类的访问方式:  类型为"外部类名.内部类名",创建时为"对象名.new 内部类构造方法名"
		Line line = new Line();
		System.out.println(line.length);//成员变量
		
		Line.Point p = line.new Point();//内部类
		
		//2静态内部类的访问方式: 外部类名.内部类名
		Line.val = 10; //成员变量
		Line.A a = new Line.A();
	}
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值