Java接口
Java不支持多继承性,即一个子类只能有一个父类;单继承使得java简单,易于管理,但如果要克服单继承性的缺点就要使用接口技术,是一个类可以实现多个接口,用关键字interface关键字来定义一个接口。
- 接口声明:interface 接口名; 接口体:包括常量定义和方法定义,方法只允许声明不允许实现。
- 口使用:class A implements print,add 或者 class A extends A1 implements print,add
- 当某个类使用接口的时候,必须给出所有方法的实现,方法的类型、参数一定要和接口的一致;接口的方法默认为public abstract,故类在实现时一定不能漏写public关键字;接口常量默认关键字为public static
Demo:
package Study;
public class InterfaceDemo {
public static void main(String agrs[]) {
O o =new B();
o.methodA();
o.methodB();
o.methodC();
}
interface O {
void methodA();
void methodB();
void methodC();
}
static class B implements InterfaceDemo.O {
public void methodA() {
System.out.println("Hello World");
}
public void methodB() {
System.out.println("Hello Android");
}
public void methodC() {
System.out.println("Hello Javascript");
}
}
}
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
package Study;
public class InterfaceDemo2 {
public static void main(String args[]){
C c=new C();
c.methodA();
c.methodB();
c.methodC();
c.eat();
c.sleep();
c.talk();
}
}
interface M {
void eat();
void sleep();
void talk();
}
class C implements InterfaceDemo.O,M {
@Override
public void methodA() {
System.out.println("Hello World");
}
@Override
public void methodB() {
System.out.println("Hello Android");
}
@Override
public void methodC() {
System.out.println("Hello Javascript");
}
@Override
public void eat() {
System.out.println("你在吃饭");
}
@Override
public void sleep() {
System.out.println("你在睡觉");
}
@Override
public void talk() {
System.out.println("你在讲话");
}
}
接口与接口:可以多继承,但一般开发不怎么用
package Study;
public class InterfaceDemo3 {
public static void main(String args[]){
E e =new E();
e.v();
e.x();
e.y();
e.z();
}
}
interface L {
void x();
void y();
}
interface Z extends L{
void z();
void v();
}
class E implements Z{
@Override
public void x() {
System.out.println("X");
}
@Override
public void y() {
System.out.println("Y");
}
@Override
public void z() {
System.out.println("Z");
}
@Override
public void v() {
System.out.println("V");
}
}
接口做功能扩展Demo:
package Study;
public class InterfaceDemoExpandFunction {
public static void main(String args[]) {
Teacher teacher = new Teacher("王二狗", 22);
System.out.println(teacher.name+" "+teacher.age);
teacher.teach();
teacher.pick();
}
}
class data {
String name;
int age;
public data(String name, int age) {
this.name = name;
this.age = age;
}
}
interface Teach{
void teach();
}
interface Pick{
void pick();
}
class Teacher extends data implements Teach,Pick{
public Teacher(String name, int age) {
super(name, age);
}
@Override
public void teach() {
System.out.println("老师具有教学功能");
}
@Override
public void pick() {
System.out.println("老师具有招生功能");
}
}