//定义一个类,这个类里因为有抽象方法,所以我们要把这个类定义为抽象类 public abstract class Sports { private String name; private int age; //空参 public Sports() { } //有参 public Sports(String name, int age) { this.name = name; this.age = age; } //定义get和set方法 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; } //定义俩个抽象类,返回值为void //这个为学习抽象类 public abstract void Play(); //这个为教学抽象类 public abstract void Techer(); }
上面这个是javabean类,把一些共性参数写在了里面,我们下次可以直接调用.
//这里我们继承了Sports这个父类 public class PingPong extends Sports { public PingPong() { } public PingPong(String name, int age) { super(name, age); } //在这里我们调用了父类的方法并且重写方法覆盖进去 @Override public void Play() { System.out.println("学打乒乓球"); } @Override public void Techer() { System.out.println("教打乒乓球"); } }
这个是子类,继承了父类.并且在这里我们调用了父类的方法并且重写方法覆盖进去.
public class BaskteBall extends Sports{ public BaskteBall() { } public BaskteBall(String name, int age) { super(name, age); } @Override public void Play() { System.out.println("学打篮球"); } @Override public void Techer() { System.out.println("教打篮球"); } }
这个也是子类,并且在这里我们调用了父类的方法并且重写方法覆盖进去.
最后一个是测试类:
在这个测试类,我们进行传参,然后调用方法,并且进行打印 public class Test { public static void main(String[] args) { //这里我们进行传参 PingPong pingPong = new PingPong("小明",15); //在这里我们调用pingpong里面的方法 System.out.println(pingPong.getName()+","+pingPong.getAge()); pingPong.Play(); pingPong.SpeakEnglish(); //这里我们进行传参 BaskteBall baskteBall=new BaskteBall("小强",16); //在这里我们调用 baskteBall里面的方法 System.out.println(baskteBall.getName()+","+baskteBall.getAge()); baskteBall.Play(); baskteBall.SpeakEnglish(); } }
而其实这里我们要知道这里我们其实并没有用到接口,这样的我们只用继承的话可能代码不够清晰明了, 那么我们就在调用一个接口:
public interface Techer { //这里我们定义了一个接口 方便我们后面去调用 public void techer(); }
接口一定要用interface去调用才行,
在PingPongTeacher这个类别里面,我们就用implements接口Techer:
然后把techer里面的方法体重新书写,
然后我们这里调用的时候,直接调用techer就行,就不要再去继承了,因为继承的话,你又要重新书写方法覆盖掉原来父类的方法,结果输出如下: