Java接口与内部类

本文介绍了Java中的接口和内部类。接口作为抽象类型,定义了类需要遵循的规范,接口中的方法默认为public,不可实例化。内部类分为成员内部类、静态内部类、方法内部类和匿名内部类,提供了访问外部类私有成员的能力,同时带来了代码结构的复杂性。文章详细阐述了各类内部类的特点和使用场景。
摘要由CSDN通过智能技术生成

接口

试想下,如果想要在一个类型中能够兼容多种类型特征,代码该如何编写呢?如果多个不同的类型在不具有相同父类的情况下,仍然要具有相同的特征,那代码又该如何编写呢?那么,在Java中,就可以通过接口实现这些行为的关联。

接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合。

接口是一种规范。

public interface IPhoto {
  public void photo();
}

注:

  1. 接口不是类,但是具有类的某些特征,它也是引用数据类型。
  2. 接口称之为最彻底的抽象类,这是因为在jdk1.8之前是几乎没有带方法体的方法的。
  3. 接口中的方法没有方法体。
  4. 类使用implements关键字来实现接口。
  5. 如果一个类实现了某个接口,那么必须重写此接口中的所有方法(如果不实现则此类必须设置为抽象类)。
  6. 接口无法直接实例化出对象,用接口的引用指向实现类的实例对象。

接口成员

接口,就如同抽象类是利用继承给子类指定规范一样,接口也是给一些没有关系的类制定了需要遵守的规范。接口不关心这些类的内部数据,也不关心这些类里面的方法的实现细节,它只规定这些类里面必须提供某些细节。

抽象方法和常量

//访问修饰符 只能是public 和 默认default
public interface INet {
	//接口中抽象方法可以不写abstract关键字
	public void network();
	
	//接口中抽象方法可以不写public,但是依然会按照public的限定范围使用
	void connection();
	
	//接口中,可以包含常量
	public static final int TEMP = 20;
	
	//关于常量的修饰符可以省略,默认public static final
	int TEMP2 = 15;
}

测试类

INet it = new Computer();//接口引用指向具体实现类
System.out.println(it.TEMP);

如果在实现类中存在和接口同名的常量,在接口引用指向实现类时,调用的是接口中定义的常量信息。

注:

  1. 接口中的方法如果没有访问修饰符,默认为public,接口中的抽象方法只能使用public修饰
  2. 接口中可以存放常量
  3. 接口中定义的属性一定是常量,在定义常量的时候,public static final可以省略不写

默认方法和静态方法

/**
	 * jdk 1.8 以后提供了默认方法
	 * 可以带方法体,默认方法不一定要被实现
	 */
	default void Connection() {
		System.out.println("我是接口中的默认链接");
	}
	
	/**
	 * jdk 1.8 以后提供了静态方法
	 * 可以带方法体
	 */
	static void stop() {
		System.out.println("我是接口中的静态方法");
	}

认方法可以在实现类中重写,也可以不重写,并可以通过接口的引用调用。静态方法不可以在实现类中重写,只能通过接口名调用。

重写默认方法必须用public修饰。

多接口重名处理
在Java中,只能单继

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值