接口的学习

本文介绍了Java中的接口和抽象类的概念与区别。接口通过`implements`关键字实现,不包含构造方法,且字段必须是静态常量。抽象类可以通过`extends`关键字继承,可以包含非抽象方法和构造方法。接口可以多继承,而类只能单继承。实现接口时必须实现所有抽象方法,而抽象类的子类可以选择不实现抽象方法。总结了抽象类与接口在使用上的异同,并给出了代码示例。
摘要由CSDN通过智能技术生成

接口

接口定义

具体的定义我就不百度了
接口是由interface修饰定义,与类不在一个体系。同样的接口不能实例化,接口中的方法只能是抽象方法(1.8以后允许在接口中写静态方法与default方法).
实现接口通过implements关键字,实现一个接口必须实现它的所有抽象方法。

具体定义一个接口和他的实现类
public interface GrandFather {
	public static void speak() {
		System.out.println("我是grandfather!");
	}
	
	public default void show() {
		System.out.println("我是族谱起始");
	}
	
	public void fly();
}
public class Father implements GrandFather{
	private int i;

	public int getI() {
		return i;
	}

	public void setI(int i) {
		this.i = i;
	}
	
	public  void test() {
		System.out.println("father 阶段!");
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println("father can  fly"+this.i);
	}
}
public class Son extends Father{

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println("son can fly!"+this.getI());
	}
	
	public static void main(String[] args) {
		Son s = new Son();
		s.show();
		System.out.println(s.getI());
		GrandFather s2 = new Son();
		s2.show();
		s2.fly();
		Father s3 = new Son();
		s3.test();
		GrandFather.speak();
	}
}

结果:
接口中静态方法它的实现类不能继承调用,只能由接口本生通过接口名调用。
接口如果要定义字段,那么该字段必须是静态且为常量。可以被接口自身及其后代调用。
接口中的default可以被后代调用

接口操作的特殊性

接口可以继承接口

//父接口
public interface A {
	public void a();
}
//子接口
public interface B extends A {
	public void b();
}

实现类要实现所有的方法:

public class BB implements B {

	@Override
	public void a() {
	}
	@Override
	public void b() {
	}
}

接口可以多继承(java中唯一)

public interface D extends A,A2{
	public void d();
}

实现时所有的方法都要实现:

public class DD implements D {

	@Override
	public void a() {
	}

	@Override
	public void a2() {
	}

	@Override
	public void d() {
	}

}

类可以在继承父类的基础上再实现其他接口(多实现)

    public class CC extends DD implements A,A2 {
    	
    }

CC实现了A,A2接口,但却没有实现A,A2中的抽象方法原因是:
DD父类已经实现了接口A,A2中的抽象方法等同于CC也已经实现了。

抽象类与接口的区别

相同点

  • 都含有抽象方法

  • 都可以继承/派生,且实现类必须实现抽象方法

  • 自身都不能直接实例化

  • 功能: 都是作为实现(子类)和使用方的联系纽带 多态

不同点

  • 实现的方式不同(接口通过实现implements关键字 / 抽象类通过extends关键字)
  • 声明的内容 接口中只能包含抽象方法(1.8后增加了静态方法和默认方法), 抽象类可以包含类能包含的所有内容(常量用的不是太多)
  • 接口没有构造方法
  • 访问权限 , 抽象类中可以用4种 接口只能是public(默认)
  • 抽象类之间可以继承但是只能是单继承; 接口之间可以产生多继承关系(java唯一一种多继承)

学习,是为了成为更好的自己!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值