JAVA接口的实现和继承 作者:邱名涛 撰写时间:2019年4月10日 关键技术:Java+MyEclipse /** 接口 [修饰符]interface 接口名extends 父接口1,父接口2 { 零到多个静态常量定义… 零到多个抽象方法定义… } 接口可以...
JAVA接口的实现和继承
作者:邱名涛
关键技术:Java+MyEclipse
接口[修饰符]interface 接口名extends 父接口1,父接口2{零到多个静态常量定义…零到多个抽象方法定义…}接口可以继承多个父接口,但接口只能继承接口,不能继承类。
//1、定义第一个interface 接口。 public interface InterFaceOne {//接口静态常量都是public修饰(公用的),没有私有private。	public static int INT_A=10; //声明时必须赋值	//编译时自动为接口里定义的成员变量增加public static final修饰符 int INT_B=10;//在接口中不写public static,系统会默认添加 //在接口中只能写抽象方法 //public abstract void running(); //编译时自动为接口里定义的方法添加public abstract修饰符 // public abstract void sleep(); void sleep();//简写。 void test(); }//2、定义第二个interface 接口。 public interface InterFaceTwo {//定义第二个接口 void twoPrint(); //方法 }//3、定义一个InterFaceOneImpl 的实现类。 implements:实现修饰 /** * InterFaceOne的实现类implements * @author QMT * */ public class InterFaceOneImpl implements InterFaceOne{ //implements:表明一个类实现了给定的接口	@Override	public void sleep() {	System.out.println("第二接口 1");//第一个方法的输出	}	@Override	public void test() {	System.out.println("第三接口 1");//第二个方法的输出	} }4、定义一个Demo类去调用接口 public class Demo { public static void main(String[] args) {	//接口的用法	//接口 变量名称=new 接口的实现类();	InterFaceOne faceOne =new InterFaceOneImpl();//new出接口需要的实现类;	faceOne.sleep();	faceOne.test();
输出结果:
继承接口。 5、定义一个接口InterFaceTwo ,继承InterFaceOne public interface InterFaceTwo extends InterFaceOne{ void twoPrint(); }6、定义InterFaceTwoInpl类,实现InterFaceOne,InterFaceTwo的方法。 public class InterFaceTwoInpl implements InterFaceOne,InterFaceTwo{ //注:继承和被继承两者都要实现	@Override	public void sleep() { System.out.println("第二接口,继承第一接口。实现一");	}	@Override	public void test() {	System.out.println("第二接口,继承第一接口。实现二");	}	@Override	public void twoPrint() {	System.out.println("第二接口,第二接口。实现三");	} }
输出结果:
【基础最重要】对java知识--继承与接口--的总结与回顾。温故而知新,可以为师矣
【基础最重要】

继承的概念

在程序中,继承描述的是事务之间的所属关系,通过继承可以使多种事务之间形成一种关系体系。例如马和牛都属于动物,程序中变可以表述为马和牛继承自动物,再比如公马母马都是马,都继承自马这一物种,马又继承自动物,就这样,这些动物之间会形成一个继承体系。
在java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称为子类,现有类被称作父类。子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extend关键字。
在类的继承中需要注意几个问题,如下:
在java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类。多个类可以继承自一个父类。在java中,子类和父类是一种相对的概念,也就是说一个类是某个类父类的同时,也可以使另一个类的子类。
另外,当子类重写父类的方法时,不能使用比父类中被重写的方法更严格的访问权限。而且当子类重写父类方法时,子类对象将无法访问父类被重写的方法,这个时候可以使用super关键字用于访问父类成员。

接口

首先阐释一下抽象类的意思:
java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字类修饰。
abstract void shout(); //定义抽象方法shout()
当一个类中包含抽象方法,该类必须使用abstract关键字来修饰,使用abstract关键字修饰的类为抽象类。
在定义抽象类时需注意:
包含抽象方法的类必须声明为抽象类,但是抽象类可以不包含任何抽象方法,只需使用abstract关键字来修饰即可。抽象类是不可以被实例化的,因为抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。
如果一个抽象类中的所有方法都是抽象类,则可以将这个类用另外一种方式来定义,即接口。在定义接口时,需要使用interface关键字声明。
interfacepeople{int ID=1;// 定义全局常量void run();//定义抽象方法 }
接口中的变量默认使用”public static final”来修饰,即全局常量。方法默认使用”public abstract”,即抽象方法。
接口的特点归纳总结:
接口中的方法都是抽象的,不能实例化对象。当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则需要实现接口中全部的方法。一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。
一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开。
interfaceRunning{//程序代码 } interfaceFlying{//程序代码 } InterfaceEatingextendsRunning,Flying{//程序代码 }
一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字之前。即“先继承,再实现”。
Java的接口有继承和实现两个概念,接口可以继承另一个接口,并获得其父接口里的所有方法和成员变量,接口也可以被一个类实现,实现接口的类需要实现接口及其父接口里的所有抽象方法,怎么理解呢? (1)如果...
Java的接口有继承和实现两个概念,接口可以继承另一个接口,并获得其父接口里的所有方法和成员变量,接口也可以被一个类实现,实现接口的类需要实现接口及其父接口里的所有抽象方法,怎么理解呢?
(1)如果接口A继承了接口B,那么接口A就继承了接口B的所有抽象方法;
(2)当一个类C实现接口A的时候,就需要实现接口A和接口B的全部抽象方法;(为什么不说全部方法,要加上“抽象”这个定语?因为Jdk1.8增加了default关键字,允许接口里有非抽象方法存在了,这些非抽象方法可以不被接口的实现类实现,这就是另外的问题了,这里不详细展开了,又兴趣可以自行参看相关文档);
(3)当一个类D实现接口B的时候,只要实现接口B的抽象方法就好了。
这里需要补充一下,为什么类不可以多继承,而接口却可以?
类只能单继承,也就是说一个类只能有一个父类,这是因为如果一个子类A继承了父类B和父类C,当父类B和父类C中有一个名字相同并且参数列表相同的方法时,类A就会产生混淆,所以只能单继承,单继承有时候会限制类的扩展性;
接口却可以实现多继承,因为接口里的方法都是抽象方法(default修饰的非抽象方法除外,这些非抽象方法会带来混淆,这里暂不讨论),并没有具体的方法体,只有接口的实现类提供了方法的实现,所以不会产生混淆。
集合类存放于Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。 1. Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 2. Iterator:迭代器,可以通过迭代器遍历...
集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和map(映射)。
1. Collection:Collection 是集合 List、Set、Queue 的最基本的接口。
2. Iterator:迭代器,可以通过迭代器遍历集合中的数据
3. Map:是映射表的基础接口
类和类之间只能继承(extends) 接口和接口之间只能继承(extends) 只有接口才可以被实现...接口继承接口同样不需要写额外的东西 普通类继承抽象类需要添加未实现的方法 普通类实现接口同样需要实现未实现的方法 ...
Java继承Thread 实现Runnable接口和实现Callable接口创建线程的区别 mycsdn多线程:Java多线程 从实现方式来分可以分为两类:继承实现和接口实现,相较于继承,实现接口避免了单继承的局限性,所以较为常用。实现...
c、java接口可以多继承。Interface3 Extends Interface0, Interface1, interface…… 不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个
【JAVA集合】接口继承关系和实现 1接口继承关系和实现 集合类存放于Java.util 包中 ,主要有 3 种:set( 集)、list( 列表包含 Queue)和map(映射)。 Collection :Collection 是集合 List 、Set、Queue的最基本...
实现接口和继承关系,每个类都有普通方法和构造方法
需要注意的几点: 放入接口中的任何域都是自动static和final的。所以代码中注释部分//!... 不管是继承还是接口实现,覆盖的只是方法,父类中声明的域不能被覆盖。