繼承知識點:
類 :
只能單繼承
一個類可以是多個類的超類(父類) 但一個類不用繼承多個(超類)父類
注:抽象類也屬於類,所以繼承時也和類繼承一樣
接口:
可以單繼承 也可以多繼承
一個接口可以由多個接口繼承,也可以繼承多個接口
面試題:Java中是否有多繼承? 有多繼承,接口可以
抽象類,接口,多態整合案例:
抽象類:人
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:38
* description:人類 抽象類
*/
public abstract class Person {
private String name;
private int 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();
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
抽象類:運動員 繼承 人類
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:41
* description:
*/
public abstract class Player extends Person{
public abstract void learn();
}
抽象類:教練 繼承 人類
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:41
* description:
*/
public abstract class Coach extends Person{
public abstract void teach();
}
普通類:籃球運動員 繼承 抽象類運動員
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:41
* description:
*/
public class BasketballPlayer extends Player{
@Override
public void learn() {
System.out.println("籃球運動員 學習");
}
@Override
public void eat() {
System.out.println("籃球運動員 吃飯");
}
}
接口:說英語
package com.xqx.demo;
public interface SpeakEnglish {
public void speakEnglish();
}
普通類:乒乓球運動員 繼承 抽象類運動員 實現說英語接口
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:41
* description:
*/
public class PingpangballPlayer extends Player implements SpeakEnglish{
@Override
public void learn() {
System.out.println("乒乓球運動員 學習");
}
@Override
public void eat() {
System.out.println("乒乓球運動員 吃飯");
}
@Override
public void speakEnglish() {
System.out.println("乒乓球運動員 說英語");
}
}
普通類:籃球教練 繼承 抽象類教練
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:41
* description:
*/
public class BasketballCoach extends Coach {
@Override
public void teach() {
System.out.println("籃球教練 教學");
}
@Override
public void eat() {
System.out.println("籃球教練 吃飯");
}
}
普通類:乒乓球教練 繼承 抽象類教練 實現說英語接口
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:41
* description:
*/
public class PingpangballCoach extends Coach implements SpeakEnglish{
@Override
public void teach() {
System.out.println("乒乓球教練 教學");
}
@Override
public void eat() {
System.out.println("乒乓球教練 吃飯");
}
@Override
public void speakEnglish() {
System.out.println("乒乓球教練 說英語");
}
}
測試類:
package com.xqx.demo;
/**
* createAuthor:xingquanxiang
* createTime:2019/8/2 16:37
* description:
*/
public class Test {
public static void main(String[] args) {
//創建乒乓球教練類對象
PingpangballCoach pingpangballCoach = new PingpangballCoach();
pingpangballCoach.setName("風清揚");
pingpangballCoach.setAge(99);
System.out.println(pingpangballCoach.toString());
pingpangballCoach.eat();
pingpangballCoach.teach();
pingpangballCoach.speakEnglish();
System.out.println("-----------------------");
//創建乒乓球運動員類對象
PingpangballPlayer pingpangballPlayer = new PingpangballPlayer();
pingpangballPlayer.setName("令狐沖");
pingpangballPlayer.setAge(18);
System.out.println(pingpangballPlayer.toString());
pingpangballPlayer.eat();
pingpangballPlayer.learn();
pingpangballPlayer.speakEnglish();
System.out.println("-----------------------");
// 創建籃球教練類 對象
BasketballCoach basketballCoach = new BasketballCoach();
basketballCoach.setName("老陽");
basketballCoach.setAge(23);
System.out.println(basketballCoach.toString());
basketballCoach.eat();
basketballCoach.teach();
System.out.println("-----------------------");
// 創建籃球運動員類 對象
BasketballPlayer basketballPlayer = new BasketballPlayer();
basketballPlayer.setName("倖權祥");
basketballPlayer.setAge(8);
System.out.println(basketballPlayer.toString());
basketballPlayer.eat();
basketballPlayer.learn();
System.out.println("-----------------------");
}
}