重写和重载

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

重写需要注意的几点:

  • 父类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;
        }
    }

 

posted @ 2019-01-12 21:39  crr121  阅读(124)  评论(0编辑  收藏  举报