zoukankan      html  css  js  c++  java
  • 重写和重载

    重写:一般发生在子类继承父类的时候会进行重写

    重写需要注意的几点:

    • 父类public,protected修饰的方法可以进行重载,但是private修饰的方式不能被重载,final修饰的任何方法都不能被重载
    • 子类重写父类的方法时,子类方法的修饰符的访问权限要大于等于父类
    • 子类的参数类型、参数个数、返回类型必须和父类一致
    public class Test1 {
        public class bird{
            public void speak(){//能够继承
                System.out.println("叽叽喳喳");
            }
    
            private void eat(){//不能继承,因为是私有方法
                System.out.println("吃食物");
            }
    
            protected void fly(){//能够继承
                System.out.println("飞翔");
            }
            
            final public void sleep(){//不能够继承,被final修饰
                System.out.println("休息");
            }
             public void craw(String s){
                System.out.println("爬行");
            }
        }
        public class goose extends bird{
           public void speak(){
               System.out.println("布谷布谷");
           }
           protected void speak(){//报错,权限应该大于父类的访问权限
               System.out.println("大雁叫");
           }
           public void eat(){//没有继承,父类为私有方法
               System.out.println("吃虫子");
           }
           public void fly(){
               System.out.println("高空飞翔");
           }
           private void fly(){//会报错,子类修饰符权限应该大于父类的访问权限
               System.out.println("大雁飞翔");
           }
           public void sleep(){//会报错,不能继承,因为该方法被final修饰
               System.out.println("大雁休息");
           }
           public void craw(String s){//可以继承,参数类型个数和返回类型一致
               System.out.println("大雁不能爬行");
           }
           public int craw(String s){//不能继承,返回类型不一致
               return Integer.parseInt(null);
           }
           public void craw(String s,int a){//不可以继承,参数个数不一致
               System.out.println("大雁不能爬行");
           }
        }
    }
    

    重载:为了体现出类的多态性,在一个类中创建函数名相同,但是返回值和参数列表不一致的方法

      public class animal{
            /**
             * 下面三种均为重载
             * @param a
             */
            public void speak(int a){
    
                System.out.println("咩咩");
            }
            public void speak(int a,String b){//参数列表不一致
    
                System.out.println("喵喵");
            }
            public int speak(int a,int b){//返回类型和参数类型个数均不一致
                return 0;
            }
        }
    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    二叉排序树
    #define使用方法
    typedef函数指针使用方法
    ORACLE触发器具体解释
    C++第11周(春)项目2
    建立人际信任的方法
    Error creating bean with name 'menuController': Injection of autowired dependency……
    strtok和strtok_r
    session销毁
    嵌入式相关5
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10326848.html
Copyright © 2011-2022 走看看