Java基础之重写

重写:在子类中重写继承自父类的方法,方法名和参数列表相同,方法实现不同。

public class Override {

public static void main(String[] args) {

  1. //方法重写测试

double fee = 480;//实际学费
double money = 500;//家长给的
Parent p = new Parent();
Child1 c1 = new Child1();
Child2 c2 = new Child2();
    p.pay(money, fee);
    c1.pay(money, fee);
    c2.pay(money, fee);


    2.//动态方法调度:指向对象不同,方法不同,仅局限父类方法被重写的情况,子类中未被重写的方法,父类无法访问

    Parent dad = null;
    Child1 son1 = new Child1();
    Child2 son2 = new Child2();
    dad = son1;//将son1地址给了dad,爸爸帮大儿子做炒饭
    dad.cook();
    dad = son2;//爸爸帮小儿子包饺子
    dad.cook();
    dad = new Parent();//只有父类对象才能调用自己的方法
    dad.cook();

}
}




//封装父类的功能

class Parent{

       1.//爸爸的任务

public void cook(){

    System.out.println("爸爸的任务:做饭");

}



2.//交学费的方法:找家长要的钱和实际学费
public void pay(double money,double fee){

        System.out.println("家长让交"+fee+"剩下"+(money-fee)+"当零花钱");

    }

}
//封装大儿子

class Child1 extends Parent{

      1. //大儿子做饭的任务

public void cook(){

    System.out.println("帮大儿子做炒饭");

}



public void pay(double money,double fee){
    System.out.println("没交学费"+fee+"都买了玩具");
        }

}

//封装二儿子

class Child2 extends Parent{

         1.//二儿子具体做饭任务

public void cook(){

        System.out.println("帮二儿子包饺子");


}



2.//小儿子重写交学费的方法
public void pay(double money,double fee){

//第一件事:交学费。使用super关键字调用父类方法的基础上再重写另一个新的方法

super.pay(money, fee);//使用父类的方法

//第二件事:将剩余的钱给了爸爸

System.out.println("给爸爸的");

        }

}

重载和重写区别

重载:“一个类中”定义多个相同的方法名,但是“参数列表不同”的方法。在“编译时”,根据“传入参数逇数据类型顺序”来决定“预选”绑定哪个方法。

重写:在“继承关系的子类里”定义“和父类中方法签名完全相同”的方法,在“程序运行时”,根据“对象的类型”不同“动态调度”,执行子类中重写的方法还是父类中的原始方法。

(只看等号右侧)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值