继承与多态

来源:互联网 发布:六壬排盘软件 编辑:程序博客网 时间:2024/05/20 16:34

1.组合

组合:在一个新类中使用另一个类的对象:

public class test {public static void main(String[] args) {testFather tf = new testFather();tf.run();}} class testFather {  void run() {}}

2.向上转型

形式:A a = new B(),B为A的子类;
因为对象既可以作为本身的类型引用,也可以作为它基类的类型引用,因此把对某个子类的对象(B)的引用视为对基类(A)的引用(父类A的引用a指向子类B的对象)称为向上转型
向上转型可以看成多态的一种体现,即允许一种类型有不同的实现(可以理解为事物存在的多种体现形态)。
public class test {public static void run(Animal a) {a.run();}public static void main(String[] args) {Tiger tiger = new Tiger();run(tiger);//println:老虎奔跑.........}} class Animal {  void run() { }} class Tiger extends Animal { @Overridevoid run() { System.out.println("老虎奔跑.........");}}
在这段代码中,Tiger的引用tiger通过run方法向上转型变成了Anmial的引用,在这里,为什么静态方法run中不直接使用(Tiger t)?
这是由于如果有多个子类,那么必须给每个子类编写run方法,这会增加代码的数量。
public class test {public static void run(Tiger t) {t.run();}public static void run(Insect i) {i.run();}public static void main(String[] args) {Tiger tiger = new Tiger();Insect insect = new Insect();run(insect);//println:昆虫飞翔.........run(tiger);//println:老虎奔跑.........}} class Animal {  void run() { }} class Tiger extends Animal { @Overridevoid run() { System.out.println("老虎奔跑.........");}}class Insect extends Animal {@Overridevoid run() {System.out.println("昆虫飞翔.........");}}
如果使用了向上转型:
public class test {public static void run(Animal a) {a.run();}public static void main(String[] args) {Tiger tiger = new Tiger();Insect insect = new Insect();run(insect);//println:昆虫飞翔.........run(tiger);//println:老虎奔跑.........}}
这样可以减少代码量。










原创粉丝点击