建立类似淘宝的网站,凡科网站做的作品如何发布,php网站怎么做自适应,北京建设工程建设交易信息网站1. 接口的概述
为什么有接口#xff1f;
借口是一种规则#xff0c;对于继承而言#xff0c;部分子类之间有共同的方法#xff0c;为了约束方法的使用#xff0c;使用接口。
接口的应用#xff1a; 接口不是一类事物#xff0c;它是对行为的抽象。
2. 接口的定义和使…1. 接口的概述
为什么有接口
借口是一种规则对于继承而言部分子类之间有共同的方法为了约束方法的使用使用接口。
接口的应用 接口不是一类事物它是对行为的抽象。
2. 接口的定义和使用 接口用关键字interface来定义 public interface 接口名{} 接口不能实例化 接口和类之间是实现关系通过implements关键字表示 public class 类名 implements 接口名{} 接口的子类实现类 要么重写接口中的所有抽象方法 要么是抽象类 注意1接口和类的实现关系可以单实现也可以多实现。 public class 类名 implements 接口名1接口名2{} 注意2实现类还可以在继承一个类的同时实现多个接口 public class 类名 extends 父类 implements 接口名1接口名2{} 练习 父类
package oopinterface.demo1;public abstract class Animal {private String name;private int age;public Animal() {}public Animal(String name, int age) {this.name name;this.age age;}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 abstract void eat();
} 游泳接口
package oopinterface.demo1;public interface Swim {public abstract void swim();
}
兔子类
package oopinterface.demo1;public class Rabbit extends Animal {public Rabbit() {}public Rabbit(String name, int age) {super(name, age);}Overridepublic void eat() {System.out.println(兔子在吃胡萝卜);}
}
青蛙类
package oopinterface.demo1;public class Frog extends Animal implements Swim {public Frog() {}public Frog(String name, int age) {super(name, age);}Overridepublic void eat() {System.out.println(青蛙在吃虫子);}Overridepublic void swim() {System.out.println(青蛙在蛙泳);}
}
狗类
package oopinterface.demo1;public class Dog extends Animal implements Swim{public Dog() {}public Dog(String name, int age) {super(name, age);}Overridepublic void eat() {System.out.println(狗吃骨头);}Overridepublic void swim() {System.out.println(狗在狗刨);}
}
测试类
package oopinterface.demo1;public class Test {public static void main(String[] args) {Dog d new Dog(小黄,2000);System.out.println(d.getName() , d.getAge());d.eat();d.swim();}
} 3. 接口中成员的特点 成员变量 只能是常量 默认修饰符public static final 构造方法没有 成员方法只能是抽象方法 默认修饰符public abstract JDK7以前接口中只能定义抽象方法。 JDK8的新特性接口中可以定义有方法体的方法 JDK9的新特性接口中可以定义私有方法 4. 接口和类之间的关系 类和类的关系 继承关系只能单继承不能多继承但是可以多层继承 类和接口的关系 实现关系可以单实现也可以多实现还可以在继承一个类的同时实现多个接口。 接口和接口之间的关系 继承关系可以单继承也可以多继承 如果实现类实现了下面的子接口继承的子类那么就需要重写所有的抽象方法包含父类和子类的抽象方法。 5. 接口和抽象类的综合案例 画图从下往上
写代码从上往下
父类人 package oopinterface.demo2;
//由于父类的子类全部为抽象类现在创建父类对象没有意义所以将父类也设置成抽象类
public abstract class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name name;this.age age;}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;}
}
运动员
package oopinterface.demo2;public abstract class Sportsman extends Person {public Sportsman() {}public Sportsman(String name, int age) {super(name, age);}public abstract void study();
}
教练
package oopinterface.demo2;public abstract class Coach extends Person {public Coach() {}public Coach(String name, int age) {super(name, age);}public abstract void teach();
}
说英语接口
package oopinterface.demo2;public interface English {public abstract void speakEnglish();
}
乒乓球运动员
package oopinterface.demo2;public class PpSportsman extends Sportsman implements English{public PpSportsman() {}public PpSportsman(String name, int age) {super(name, age);}Overridepublic void speakEnglish() {System.out.println(乒乓球运动员在说英语);}Overridepublic void study() {System.out.println(乒乓球运动员在练习打乒乓球);}
}
篮球运动员
package oopinterface.demo2;public class BasketballSportsman extends Sportsman {public BasketballSportsman() {}public BasketballSportsman(String name, int age) {super(name, age);}Overridepublic void study() {System.out.println(篮球运动员在学习打篮球。);}
}
篮球教练
package oopinterface.demo2;public class BaskateballCoach extends Coach {public BaskateballCoach() {}public BaskateballCoach(String name, int age) {super(name, age);}Overridepublic void teach() {System.out.println(篮球教练正在教打篮球。);}
}
乒乓球教练
package oopinterface.demo2;public class PpCoach extends Coach implements English{public PpCoach() {}public PpCoach(String name, int age) {super(name, age);}Overridepublic void teach() {System.out.println(乒乓球教练在教打乒乓球。);}Overridepublic void speakEnglish() {System.out.println(乒乓球教练在学习说英语。);}
}
测试类;
package oopinterface.demo2;public class Test {public static void main(String[] args) {PpSportsman pps new PpSportsman(ml,24);System.out.println(pps.getName() , pps.getAge());pps.speakEnglish();pps.study();}
}