继承多态和接口多态
继承多态和接口多态基本一致,不同的是类的继承是使用继承关系实现多态,而接口多态是使用实现的方式实现的
接口多态
package 接口;
interface Preson{
public void teachLession();
public void sleep();
}
class JavaTeacher implements Preson{
//实现第一种多态
String name;
int age;
public JavaTeacher(String name) {
注意构造函数是不用返回值void int String 的
Public void JavaTeacher (String name){
This.name=name;
}这是错的
this.name=name;
}
public void teachLession() {
System.out.println(name+"老师正在讲多态");
}
public void smoking() {
System.out. println("正在抽烟");
}
public void sleep() {
System.out.println(name+"正在睡觉");
}
}
class PHPTeacher implements Preson{
//实现 第二种多态
String name;
int age;
public PHPTeacher(String name) {
this.name=name;
}
public void teachLession() {
System.out.println(name+"老师在讲PHP");
}
public void sleep() {
System.out.println(name+"老师正在睡觉");
}
}
class Leader{
public void checkTeacher(Preson t) {
String preson="";
//instanceof可以判断我们的多态的引用变量到底是什么类型
if(t instanceof JavaTeacher ) {
preson="Java老师";
}
else if(t instanceof PHPTeacher ) {
preson ="PHP老师";
}
System.out.println("开始考察"+preson);
t.teachLession();
System.out.println("考察结束");
}
}
public class 接口 {
public static void main(String [] args) {
Preson j=new JavaTeacher("张三");
j.sleep();
j.teachLession();
//注意
//j.smoking();子类中特有的方法不能用父类来调用
//但是可以用子类来的调用
JavaTeacher d=new JavaTeacher("张三");
d.smoking();
PHPTeacher p=new PHPTeacher("李希");
p.sleep();
p.teachLession();
Leader leader=new Leader();
leader.checkTeacher(j);
}
}
继承多态
package 接口;
abstract class Preson{
String name;
int age;
public abstract void teachLession();
public void sleep() {
System.out.println("正在睡觉");
}
}
class JavaTeacher extends Preson{
//实现第一种多态
public void teachLession() {
System.out.println(name+"老师正在讲多态");
}
public void smoking() {
System.out. println("正在抽烟");
}
}
class PHPTeacher extends Preson{
//实现 第二种多态
public void teachLession() {
System.out.println(name+"老师在讲PHP");
}
public void sleep() {
System.out.println("老师正在睡觉");
}
}
public class 接口 {
public static void main(String [] args) {
Preson j=new JavaTeacher();
j.name="张三";
j.age=21;
j.sleep();
j.teachLession();
注意
//j.smoking();子类中特有的方法不能用父类来调用
//但是可以用子类来的调用
JavaTeacher d=new JavaTeacher();
d.smoking();
PHPTeacher p=new PHPTeacher();
p.name="李希";
p.age=21;
p.sleep();
p.teachLession();
}
}
正在睡觉
张三老师正在讲多态
正在抽烟
老师正在睡觉
李希老师在讲PHP