JAVA 常用方法实例 重写(Override)与重载(Overload)

重写(Override)

重写是子类父类允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变
外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。
也就是说子类能够根据需要实现父类的方法。
方法的重写和属性无关

关注public static换成private static必定不行

使用public static(静态方法)实例

主程序App.java

public class App {
  public static void main(String[] args) {
    //创建父类对象
    Father father=new Father();
    //执行父类方法
    father.test();

    //方法的调用只和左边的数据类型有关
    //创建子类对象
    Sun sun=new Sun();
    //执行子类方法
    sun.test();

    //父类的引用指向了子类对象

    //父类创建一个子类对象
    Father newFather=new Sun();
    //执行父类方法
    newFather.test();

    /*
    子类引用指向父类对象是不行的
    Sun newSun=new Father();
    newSun.test();
	*/
  }

}

父类Father.java

public class Father{
  //1.父类方法
  public static void test(){
    System.out.println("我是爸爸");
  }
}

子类Sun.java

public class Sun extends Father{
//2.子类继承父类
//因为有继承关系,所以创建了父类子类对象后方法都共享了
  public static void test(){
    System.out.println("我是儿子");
  }
}

执行结果

我是爸爸
我是儿子
我是爸爸

使用public(去掉static)表示重写(非静态方法)实例

主程序App.java

public class App {
  public static void main(String[] args) {
    //创建父类对象
    Father father=new Father();
    //执行父类方法
    father.test();

    //方法的调用只和左边的数据类型有关
    //创建子类对象
    Sun sun=new Sun();
    //执行子类方法
    sun.test();

    //3.父类的引用指向了子类

    //父类创建一个子类对象
    Father newFather=new Sun();
    //执行父类方法
    newFather.test();

    /*
    子类引用指向父类是不行的
    Sun newSun=new Father();
    newSun.test();
    */
  }
}

父类Father.java

public class Father{
  //1.父类方法
  public void test(){
    System.out.println("我是爸爸");
  }
}

子类Sun.java

public class Sun extends Father{
//2.子类继承父类
//因为有继承关系,所以创建了父类子类对象后方法都共享了
  public void test(){
    System.out.println("我是儿子");
  }
}

执行结果

我是爸爸
我是儿子
我是儿子

总结:
子类是静态方法执行的是父类方法
子类是非静态方法执行的是子类方法(重写)。
权限级别:
public > protected > default > private

重载(Overload)

重载:在同一类中方法名相同参数不同
主程序App.java

public class App {
  public static void main(String[] args) {
    Teacher teacher = new Teacher();
    teacher.teach(25);
    teacher.teach("张","数学");
  }
}

类Teacher.java

public class Teacher{
  public int teach(int age){
    System.out.println("老师的年龄是:"+age+"岁");
    return age;
  }
  public String teach(String firstName,String subject){
    System.out.println(firstName+"老师教"+subject);
    return firstName;
  }
}

执行结果

老师的年龄是:25岁
张老师教数学
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望天吼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值