(菜鸟也学大数据)20200723-JAVA中方法的重写与重载的区别、重写的规则与使用

一.重写与重载的区别

具体的重载在我之前的博文有写过,有兴趣的小伙伴可以看一下。
在这里插入图片描述

二.方法重写的规则

  • 重写方法所在的类要与原方法类为继承关系
  • 方法名相同
  • 参数列表相同
  • 返回值类型相同或是父类返回值的子类
  • 访问修饰符不能严于父类
  • 抛出的异常不能多余父类
  • 父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法
  • 子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(注:静态方法中无法使用super)
  • 父类的私有方法不能被子类覆盖

三.代码示例

  • 先创建一个父类并写一个eat方法
    在这里插入图片描述

  • 在创建个狗类继承父类并重写eat方法
    在这里插入图片描述

  • 在创建个猫类不重写方法
    在这里插入图片描述

  • 此时创建一个测试类,分别调用猫的eat方法以及狗类重写后的eat方法
    在这里插入图片描述

  • 结果
    在这里插入图片描述

四.总结

  • 重写方法可以很使子类根据自己的特性来自定义方法内容

五.接招

  • 所有没继承父类的类默认继承Object类,尝试着重写object类中的equals与toString两个方法
  • 重写toString方法
//创建一个类Pet
public class Pet {//类默认继承Object
    public String name;
    
    public String  toString(){
        return "我的名字叫:"+name;
    }


//创建一个测试类
public class Test {

    public static void main(String[] args) {
        Pet pet=new Pet();//实例化对象pet
        pet.name="狗子";
        System.out.println(pet.toString());//调用重写后的toString方法
    }
}
  • 重写equals方法
//创建一个类Pet
public class Pet {//类默认继承Object
    public String name;
    
    public boolean equals(Object object){//重写equals方法
       if (object instanceof Pet){//instanceof的作用,判断左边的对象是否为右边类的示例(或接口,抽象类,父类)
           Pet pet=(Pet) object;//将对象强制转型成Pet类
           if (this.name!=null&&this.name.equals(pet.name)){//判断对象的属性name是否与当前类的属性name相同
               return true;

           }
       }
       return false;

   }

//创建一个测试类
public class Test {

    public static void main(String[] args) {
        Pet pet=new Pet();
        Pet pet1=new Pet();
        pet.name="狗子";
        pet1.name="狗子";
        System.out.println(pet.equals(pet1));//调用对象pet的equals方法,如果pet1与pet的属性name相同,则返回true
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_38468167/article/details/107528244
今日推荐