Java之接口(interface)的使用:加案例

首先我们要来理解一下什么是接口

                    *接口是一种规范,规定了行业标准,声明有什么功能,但是不实现声明的功能

                    *接口只是规定了要做什么,至于怎么做是由它的实现类去做的

接口中的一些注意事项:

                    *在接口中定义的所有变量都是常量,即接口中不能有变量

            *int x = 10;编译器会自动在前面加上public static final

                    *接口中所有的方法都是抽象方法,不能有实现

            *接口中所有的方法都是public abstract修饰的,即使程序员没有写,编译器也会自动加上.所以在声明的时候可以省略不写

                     *接口之间的继承使用的关键字和类之间继承使用的关键字是相同的,都是extends
                     * 一个接口可以同时继承多个接口,使用的关键字是extends
                     * 一个类只能继承一个父类,使用的关键字也是extends
                     * 一个类实现接口使用的关键字是implements,一个类可以实现多个接口,但不能同时继承多个父类

                     * 这是因为Java语言是单根继承

                    在多态的情况下,可以记住一个定律,方便排除
                     * 父类类型 父类对象 = new 子类类型();
                     * 以"="作为参考点
                     * 编译看左边,运行看右边

                     * 在上面的多态声明中,不能调用子类特有的方法

下面我们来举个例子:
定义三个接口,一个实现类,一个测试类

interface A:

package com.oracle.interfaces;

/**
 *接口是一种规范,规定了行业标准,声明有什么功能,但是不实现声明的功能
 *
 *接口只是规定了要做什么,至于怎么做是由它的实现类去做的
 *
 * @author TF
 *
 */
public interface A {
	/**
	 * 在接口中定义的所有变量都是常量,即接口中不能有变量
	 * int x = 10;编译器会自动在前面加上public static final
	 */
	/*public static final*/ int x = 10;
	/**
	 * 接口中所有的方法都是抽象方法,不能有实现
	 * 接口中所有的方法都是public abstract修饰的,即使程序员没有写,编译器也会自动加上.所以在声明的时候可以省略不写
	 */
	/*public abstract*/ void showA();

}

interface B:

package com.oracle.interfaces;

public interface B {
	void showB();

}

interface C extends A,B:

package com.oracle.interfaces;
/**
 * 接口之间的继承使用的关键字和类之间继承使用的关键字是相同的,都是extends
 * 一个接口可以同时继承多个接口,使用的关键字是extends
 * 一个类只能继承一个父类,使用的关键字也是extends
 * 
 * 一个类实现接口使用的关键字是implements,一个类可以实现多个接口,但不能同时继承多个父类
 * 这是因为Java语言是单根继承
 * @author TF
 *
 */

public interface C extends A,B{
	void showC();

}

实现类 :class MyAB implements /*A,B*/C:

package com.oracle.interfaces;
/**
 * 类实现接口需要使用关键字:implements
 * 一个类可以同时实现多个接口,多个接口之间使用逗号分隔
 * 
 * 一个类实现接口则必须实现接口中所有的方法,否则当前类也得是抽象类
 * @author TF
 *
 */

public class MyAB implements /*A,B*/C{

	@Override
	public void showA() {
		System.out.println("showA()");
		
	}
	
	@Override
	public void showB() {
		System.out.println("showB()");
		
	}

	@Override
	public void showC() {
		System.out.println("showC()");
		
	}

}

测试类:class TestInterfaceDemo:

package com.oracle.interfaces;


/**
 * 在多态的情况下,可以记住一个定律,方便排除
 * 父类类型 父类对象 = new 子类类型();
 * 以"="作为参考点
 * 
 * 编译看左边,运行看右边
 * 在上面的多态声明中,不能调用子类特有的方法
 * 
 * @author TF
 *
 */
public class TestInterfaceDemo {
	public static void main(String[] args) {
		A a = new MyAB();
		a.showA();
		B b = new MyAB();
		b.showB();
		
		C c = new MyAB();
		c.showA();
		c.showB();
		c.showC();
		
	}

}

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值