Java学习 - 黑马(第二部分) - 随堂笔记 - 05_接口
1. 接口
接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用
Java中的接口更多的体现在对行为的抽象
1.2 接口的特点
- 接口用关键字interface修饰
public interface 接口名{}
- 类实现接口用implements表示
public class 类名 implements 接口名{}
- 接口不能实例化?
- 接口如何实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态。
- 多态的形式:具体类多态,抽象类多态,接口多态
- 多态的前提:有继承或者实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象
- 接口的实现类
- 要么重写接口中的所有抽象方法
- 要么是抽象类
package com.itheima_01;
public interface Jumpping {
public abstract void jump();
}
package com.itheima_01;
public class Cat implements Jumpping {
@Override
public void jump() {
System.out.println("猫跳高");
}
}
package com.itheima_01;
public abstract class Dog implements Jumpping{
}
package com.itheima_01;
//测试类
public class JumppingDemo {
public static void main(String[] args) {
//Jumpping j = new Jumpping();//报错,接口不能直接实例化
Jumpping j = new Cat();
j.jump();
}
}
1.3 接口的成员特点
- 成员变量
- 只能是常量
- 默认修饰符:public static final
- 构造方法
- 接口没有构造方法,因为接口只要是对行为进行抽象的,是没有具体存在
- 一个类如果没有父类,默认继承Object类
- 成员方法
- 只能是抽象方法
- 默认修饰符:public abstract
- 关于接口中的方法,JDK8和JDK9中有一些新特性,后面再讲解
package com.itheima_02;
//public class InterImpl implements Inter等价于
public class InterImpl extends Object implements Inter{
public InterImpl(){
super();
}
@Override
public void method() {
System.out.println("method");
}
@Override
public void show() {
System.out.println("show");
}
}
package com.itheima_02;
public interface Inter {
public int num = 10;
public final int num2 = 20;
//public static final int num3 = 30;//相当于
int num3 = 30;
//public Inter(){}//接口不能构造方法
//public void show(){}//报错,接口不能有非抽象方法
public abstract void method();
void show();//默认带public abstract
}
package com.itheima_02;
//测试类
public class InterfaceDemo {
public static void main(String[] args) {
Inter i = new InterImpl();
System.out.println(i.num);
//i.num = 20;//报错,接口里面默认被final修饰
System.out.println(i.num2);
//i.num2 = 40;//报错,被final修饰
System.out.println(Inter.num);//默认被静态修饰
}
}