标签:抽象类 抽象方法 ati 接口实现 new code each 类方法 重写
多态的定义与使用格式
多态的定义格式:就是父类的引用变量指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();
普通类多态定义的格式
父类 变量名 = new 子类();
如: class Fu {}
class Zi extends Fu {}
//类的多态使用
Fu f = new Zi();
式抽象类多态定义的格
抽象类 变量名 = new 抽象类子类();
如: abstract class Fu {
public abstract void method();
}
class Zi extends Fu {
public void method(){
System.out.println(“重写父类抽象方法”);
}
}
//类的多态使用
Fu fu= new Zi();
接口多态定义的格式
接口 变量名 = new 接口实现类();
如: interface Fu {
public abstract void method();
}
class Zi implements Fu {
public void method(){
System.out.println(“重写接口抽象方法”);
}
}
//接口的多态使用
Fu fu = new Zi();
注意事项
同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。
如 Person p1 = new Student();
Person p2 = new Teacher();
p1.work(); //p1会调用Student类中重写的work方法
p2.work(); //p2会调用Teacher类中重写的work方法
当变量名指向不同的子类对象时,由于每个子类重写父类方法的内容不同,所以会调用不同的方法。
public class Person { public void eat() { System.out.println("人吃饭"); }
}
public class Student extends Person{ public void eat() { System.out.println("学生吃饭"); }
}
public abstract class Animal { public abstract void sleep() ; }
public class Cat extends Animal{ public void sleep() { System.out.println("猫趴着睡觉"); }
}
public interface Drinking { public abstract void drink(); }
public class Pig implements Drinking{ public void drink() { System.out.println("小猪喝酒"); } }
public class Demo01 { public static void main(String[] args) { //1.多态:子类对象指向父类引用变量(普通类之间的多态) Person p=new Student(); p.eat(); //2.抽象类与普通类的多态(抽象类可利用多态创建普通对象) Animal a=new Cat(); a.sleep(); //3.接口与普通类之间的多态(子类必须是普通类) Drinking d=new Pig(); d.drink(); }
}
标签:抽象类 抽象方法 ati 接口实现 new code each 类方法 重写
原文地址:https://www.cnblogs.com/l1314/p/12059557.html