//定义一个类,这个类里因为有抽象方法,所以我们要把这个类定义为抽象类 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);}//在这里我们调用了父类的方法并且重写方法覆盖进去@Overridepublic void Play() {System.out.println("学打乒乓球");}@Overridepublic void Techer() {System.out.println("教打乒乓球");}}
这个是子类,继承了父类.并且在这里我们调用了父类的方法并且重写方法覆盖进去.
public class BaskteBall extends Sports{public BaskteBall() {}public BaskteBall(String name, int age) {super(name, age);}@Overridepublic void Play() {System.out.println("学打篮球");}@Overridepublic 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就行,就不要再去继承了,因为继承的话,你又要重新书写方法覆盖掉原来父类的方法,结果输出如下: