zoukankan      html  css  js  c++  java
  • 1-9方法的重写(override)

    什么是重写?

    重写,也叫做覆盖,当父类中的方法无法满足子类需求时,子类可以将父类的方法进行重写编写来满足需求。比如孩子继承了父亲的房子,可以将房子重新装修。
    方法重写的条件:

    • 两个类必须是继承关系
    • 必须具有相同的方法名,相同的返回值类型,相同的参数列表.
    • 重写的方法不能比被重写的方法拥有更低的访问权限。
    • 重写的方法不能比被重写的方法抛出更宽泛的异常。(关于异常后面的章节再讲。)
    • 私有的方法不能被重写。
    • 构造方法无法被重写,因为构造方法无法被继承。
    • 静态的方法不存在重写。
    • 重写指的是成员方法,和成员变量无关。
      先定义一个动物类
    class Animal {
    
        public void eat() {                
            System.out.println("吃饭");
        }
    
        public void sleep() {            
            System.out.println("睡觉");
        }
    }
    定义一个Cat类继承Animal
    
    class Cat extends Animal {
    
        public void eat() {                
            System.out.println("吃猫粮");//猫喜欢吃猫粮
        }
    }
    

    定义一个Dog类继承Animal

    class Dog extends Animal {
    
        public void eat() {                
            System.out.println("吃狗粮");//狗喜欢吃狗粮
        }
    }
    

    Animal测试类

    public class AnimalTest01 {
        public static void main(String[] args) {
            Cat c = new Cat();
            c.eat();
    
            Dog d = new Dog();
            d.eat();
        }
    }
    

    上代码中的Cat类和Dog类在调用父类Animal中的eat方法时已经不能很好的满足自身的需求了,所以都将eat类进行了重写。

    静态的方法不存在重写

    public class Test01{
    
        public static void main(String[] args){
    
            A.m1();
            B.m1();
        }
    }
    
    
    class A{
    
        //静态方法
        public static void m1(){
            System.out.println("A中静态方法m1");
        }
    }
    
    class B extends A{
    
        //尝试重写父类的静态方法
        public static void m1(){
            System.out.println("B中静态方法m1");
        }
    }
    
  • 相关阅读:
    MooseFS基础和安装
    自动化运维工具SaltStack详细部署
    linux中的通配符与正则表达式
    使用GitHub做个人博客
    mysql数据库分库备份脚本
    php-fpm配置详解
    php-fpm安装、配置与优化
    ceph的正常卸载与非正常卸载
    CentOS系统/tmp目录里面的文件默认保留多久
    ansible常用命令
  • 原文地址:https://www.cnblogs.com/superfly123/p/10442847.html
Copyright © 2011-2022 走看看