接口的特点:
接口的关键字
public interface 接口名()
类实现接口的关键字
public class 类名 implements 接口名()
接口的实现参照多态:抽象类多态,接口多态
一般以Impl结尾为接口的实现类
例如: interImpl
接口内变量默认被final修饰 ,内容只能是常量
int num3 = 30
//在接口内这样写就等于了 public static final int num3 =30
皆相同
//在接口内变量
public final int num2 = 20;
int num2 = 20;
//在接口内方法
public abstract void methods();
void methods();
猫和狗(接口版)
Animal
package 猫和狗接口版; 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(); }
AnimalDemo
package 猫和狗接口版; /** * 测试类 */ public class AnimalDemo { public static void main(String[] args) { Jumpping j = new Cat(); j.jump(); System.out.println("--------------"); Animal a = new Cat(); a.setName("加菲"); a.setAge(5); System.out.println(a.getName()+","+a.getAge()); a.eat(); System.out.println("-------------------"); a = new Cat("加菲",5); System.out.println(a.getName()+","+a.getAge()); a.eat(); System.out.println("---------以下是真正使用------------"); Cat c = new Cat(); c.setName("加菲"); c.setAge(5); System.out.println(a.getName()+","+a.getAge()); c.jump(); c.eat(); System.out.println("----------以下为狗------------------"); Dog d = new Dog(); d.setName("皮皮"); d.setAge(10); System.out.println(d.getName()+","+d.getAge()); d.jump(); d.eat(); } }
Cat
package 猫和狗接口版; public class Cat extends Animal implements Jumpping { public Cat() { } public Cat(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("猫吃鱼"); } @Override public void jump() { System.out.println("猫可以跳高了"); } }
Dog
package 猫和狗接口版; public class Dog extends Animal implements Jumpping { public Dog() { } public Dog(String name, int age) { super(name, age); } @Override public void eat() { System.out.println("狗吃骨头"); } public void jump() { System.out.println("狗可以跳高了"); } }
Jumpping接口
package 猫和狗接口版; public interface Jumpping { void jump(); }
抽象类是对事物的抽象,接口是对行为的抽象
--------------------------------------------
运动员与教练的接口练习
接口SpeakEnglish
package 运动员和教练案例; public interface SpeakEnglish { void speak(); }
接口内void speak = public abstract void speak
------------------------------------------------------------------------------------------------
Person构造函数(抽象类)
package 运动员和教练案例; //抽象人类 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; } public abstract void eat(); }
Coash类 (抽象继承了Person
package 运动员和教练案例; public abstract class Coach extends Person { public Coach() { } public Coach(String name, int age) { super(name, age); } public abstract void teach(); }
Player运动员类同上
package 运动员和教练案例; public abstract class Player extends Person { public Player() { } public Player(String name, int age) { super(name, age); } public abstract void study(); }
BasketballCoash篮球教练
package 运动员和教练案例; public class BasketballCoach extends Coach { public BasketballCoach() { } public BasketballCoach(String name, int age) { super(name, age); } @Override public void teach() { System.out.println("篮球教练教学"); } @Override public void eat() { System.out.println("篮球教练吃羊肉"); } }
BasketballCoash篮球运动员
package 运动员和教练案例; public class BaskerBallPlayer extends Player { public BaskerBallPlayer() { } public BaskerBallPlayer(String name, int age) { super(name, age); } @Override public void study() { System.out.println("篮球运动员学习如何运球和投篮"); } @Override public void eat() { System.out.println("篮球运动员吃牛肉"); } }
乒乓球教练
package 运动员和教练案例; public class PingBangCoach extends Coach implements SpeakEnglish { public PingBangCoach() { } public PingBangCoach(String name, int age) { super(name, age); } @Override public void teach() { System.out.println("乒乓球教练教如何发球"); } @Override public void eat() { System.out.println("乒乓球教练吃小白菜"); } @Override public void speak() { System.out.println("乒乓球教练说英语"); } }
乒乓球运动员
package 运动员和教练案例; public class PingBangPlayer extends Player implements SpeakEnglish { public PingBangPlayer() { } public PingBangPlayer(String name, int age) { super(name, age); } @Override public void study() { System.out.println("乒乓球运动员学习如何发球接球"); } @Override public void eat() { System.out.println("乒乓球运动员吃大白菜"); } @Override public void speak() { System.out.println("乒乓球运动员说英语"); } }
PersonDemo测试类(利用多态
package 运动员和教练案例; /** * 测试类 */ public class PersonDemo { public static void main(String[] args) { //PingBangPlayer设置成了非抽象类 //乒乓球运动员 PingBangPlayer ppp = new PingBangPlayer(); ppp.setName("帅哥"); ppp.setAge(30); System.out.println(ppp.getName()+","+ppp.getAge()); ppp.eat(); ppp.study(); ppp.speak(); System.out.println("--------------"); //篮球运动员 BaskerBallPlayer bp = new BaskerBallPlayer(); bp.setName("姚明"); bp.setAge(50); System.out.println(bp.getName()+","+bp.getAge()); bp.eat(); bp.study(); System.out.println("---------------"); //篮球教练 BasketballCoach bpc = new BasketballCoach(); bpc.setName("姚明的教练"); bpc.setAge(50); System.out.println(bpc.getName()+","+bpc.getAge()); bpc.teach(); bpc.eat(); System.out.println("-----------------------"); //乒乓球教练 PingBangCoach ppb = new PingBangCoach(); ppb.setName("乒乓球教练"); ppb.setAge(40); System.out.println(ppb.getName()+","+ppb.getAge()); ppb.eat(); ppb.speak(); ppb.teach(); } }