1. 初步认识Java接口
创建接口:
public interface Jump {
public abstract void name();
// 其中public abstract 可以不写
}
接口的使用
public class human implements name { //类不能继承接口,而是实现接口
@Override
public void jump() {
System.out.println("human have name");
}
}
注意关键字“implements”
接口不能实例化,需要参照多态的方式通过哟实现类对象实例化,叫做接口多态
Name j = new human(); //用多态的方式实例化
j.name();
2. Java接口的方法
public interface inter {
public int num = 10;
public final int num2 = 20;
public static final int num3 = 30; //默认修饰符:psvf,前面public……变灰,说明可不修饰
int num4 = 40;
// public Inter(); //接口里不能有构造方法,对行为具体抽象
// 成员方法
// public void show() {} //接口里不能有非抽象方法
public abstract void show(); //在impl中实现
void method();
}
public class interimpl implements inter {
// 等价于:
// public class interimpl extends Object implements inter{}
/**
* Object类是层次结构的根。每个类都有object作为超类
* (所有的类直接或间接继承obj类)
* (一个类没有父类,就是直接继承obj类,有父类,则是间接继承obj类)。
* 所有对象都实现了这个类的方法。
* (所有构造方法默认访问父类都是无参构造,因为obj只有无参构造)
* (构造方法:Object())
*/
public interimpl() {
super();
}
@Override
public void show() {
System.out.println("show");
}
@Override
public void method() {
System.out.println("method");
}
}
3. Java接口的关系
创建3个接口
public interface Inter1 {
}
public interface Inter2 {
}
/**
* 接口和接口是继承关系,可以多继承
*/
public interface Inter3 extends Inter1, Inter2 {
}
/**
* public class Interimpl implements Inter1, Inter2{}
* 一个类可以同时实现多个接口,还可以继承类的时候实现多个接口
*/
public class Interimpl extends Object implements Inter1, Inter2{
}
总结:接口之间可以继承,一个类可以实现多个接口
4. 应用(题目来源:黑马程序员)
接口:
public interface English {
void speakEnglish();
}
人类:
public abstract class human {
private String name;
private int age;
public abstract void eat();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public human(String name, int age) {
this.name = name;
this.age = age;
}
public human() {
}
}
教练类:
public abstract class coach extends human{
public abstract void teach();
public coach(String name, int age) {
super(name, age);
}
public coach() {
}
}
运动员类:
public abstract class sports extends human{
public abstract void study();
public sports(String name, int age) {
super(name, age);
}
public sports() {
}
}
篮球教练:
public class bballcoach extends coach{
@Override
public void eat() {
System.out.println("bcoach eat meat");
}
@Override
public void teach() {
System.out.println("teach basketball");
}
public bballcoach(String name, int age) {
super(name, age);
}
public bballcoach() {
}
}
乒乓球教练:
public class pcoach extends coach implements English{
@Override
public void eat() {
System.out.println("pcoach eat meat");
}
@Override
public void speakEnglish() {
System.out.println("说英语");
}
@Override
public void teach() {
System.out.println("教乒乓球");
}
public pcoach(String name, int age) {
super(name, age);
}
public pcoach() {
}
}
篮球运动员:
public class bsports extends sports{
@Override
public void eat() {
System.out.println("eat grass");
}
@Override
public void study() {
System.out.println("study basketball");
}
public bsports(String name, int age) {
super(name, age);
}
public bsports() {
}
}
乒乓球运动员:
public class psports extends sports implements English{
@Override
public void eat() {
System.out.println("eat grass");
}
@Override
public void speakEnglish() {
System.out.println("speak english");
}
@Override
public void study() {
System.out.println("study pingpangball");
}
public psports(String name, int age) {
super(name, age);
}
public psports() {
}
}
运行测试类:
public class demo {
public static void main(String[] args) {
psports p = new psports("apple", 19);
System.out.println(p.getName() + ", " + p.getAge());
p.eat();
p.study();
p.speakEnglish();
}
}