继承知识点:
类 :
只能单继承
一个类可以是多个类的超类(父类) 但一个类不用继承多个(超类)父类
注:抽象类也属于类,所以继承时也和类继承一样
接口:
可以单继承 也可以多继承
一个接口可以由多个接口继承,也可以继承多个接口
面试题: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("-----------------------");
}
}