您当前的位置: 首页 >  Java

Kevin-Dev

暂无认证

  • 0浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java -- 基础】方法重写(Override)& 重载(Overload)

Kevin-Dev 发布时间:2019-12-09 09:09:52 ,浏览量:0

前言

在 Java 中,作为三大特性之一的多态特性是十分重要,特别是其表现形式:方法重载(Overload)、方法重写(Override)

1. 方法重载(Overload)

在这里插入图片描述

  • 具体使用
public class Test { 

// 类定义
    static abstract class Human { 
    } 
 
// 继承自抽象类Human
    static class Man extends Human { 
    } 
 
    static class Woman extends Human { 
    } 
 
// 定义的重载方法(方法名相同,但参数列表不同(此处是类型不同))
    public void sayHello(Human guy) { 
        System.out.println("hello,guy!"); 
    } 
 
    public void sayHello(Man guy) { 
        System.out.println("hello gentleman!"); 
    } 
 
    public void sayHello(Woman guy) { 
        System.out.println("hello lady!"); 
    } 

// 测试代码
    public static void main(String[] args) { 
        Human man = new Man(); 
        Man woman = new Woman(); 
        Test test = new Test(); 

        test.sayHello(man); 
        test.sayHello(woman); 
    } 
}

// 运行结果
hello,guy! 
hello gentleman!
2. 方法重写(Override)

在这里插入图片描述

  • 具体使用
// 定义类
    class Human { 
        public void sayHello(){ 
            System.out.println("Human say hello"); 
 
        } 
    } 
 
// 继承类Human 并 重写sayHello()
    class Man extends Human { 
        @Override 
        protected void sayHello() { 
            System.out.println("man say hello"); 
 
        } 
    } 
 
    class Woman extends Human { 
        @Override 
        protected void sayHello() { 
            System.out.println("woman say hello"); 
 
        } 
    } 

// 测试代码
    public static void main(String[] args) { 

        // 情况1
        Human man = new man(); 
        man.sayHello(); 

        // 情况2
        man = new Woman(); 
        man.sayHello(); 
    } 
}

// 运行结果
man say hello
woman say hello

// 原因解析
// 通过多态,调用了子类中复写的sayHello()

3. 二者对比 & 区别

在这里插入图片描述

关注
打赏
1658837700
查看更多评论
立即登录/注册

微信扫码登录

0.0396s