java基础

多态的一些问题,写的很简陋,希望大家不要介意。话不多说,直接上代码。

父类的方法:

package com.example.vm510l.myapplication;

public class Animal {

    public void eat(){
        System.out.println("吃东西");
    }
    public void run(){
        System.out.println("移动");
    }
}

子类的方法

package com.example.vm510l.myapplication;

public class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("我吃鱼");
    }
    public void jump(){
        System.out.println("我会跳");
    }
}

测试方法

package com.example.vm510l.myapplication;

public class Test {
    public static void main(String[] args) {
        Animal a = new Cat();
        a.eat();
        a.run();
        // a.jump();   编译通不过
        ((Cat) a).jump();
    }
}

然后大家猜猜一下,会输出什么东西。

输出结果为:

//我吃鱼
//移动
//我会跳

总结:通过上面的例子说明:

只能调用被子类复写的方法(即子类和父类都有的方法),

我们如果想调用父类的run方法呢,就是用super.run();这样调用的就只是父类的方法了,因为子类继承父类的时候如果有相同的方法的话,父类的方法会被子类覆盖。
(如果子类没有复写,没有这个方法,则去父类查询,父类如果有,则调用)
(如果子类有,而父类没有,调用此方法,编译通不过,这时候得向下转型一下,才能调用,如代码所示)

如果父类有个变量,子类也有一个不同的变量,则调用的时候一直是执行父类里面的变量
(如果父类的方法是私有的,但是子类的方法是自己的,即是子类方法名字和父类名字相同,但是和父类没有一点关系)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值