java重写方法

Posted 心有猛虎嗅蔷薇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java重写方法相关的知识,希望对你有一定的参考价值。

文章目录

一.重写

重写(override):也称覆盖。重写是子类对父类非静态非private非final方法的实现过程进行重新编写,返回值(JDK7以后,被重写的方法返回值类型可以不同,但是必须是具有父子关系的)和形参都不能改变。即外壳不变,核心重写。

【方法重写的规则】:
1.子类在重写父类的方法时,一般必须与父类方法原型一致:修饰符 返回值类型 方法名(参数列表) 要完全一致
2.JDK7以后,被重写的方法返回值类型可以不同,但是必须是具有父子关系的。
3.访问权限不能比父类中被重写的方法的访问权限更低。
4.父类被static、private final修饰的方法不能被重写。

二.重写和重载的区别

1.重载

重载的参数列表是必须修改的,而返回值类型,访问限定符是可以修改的

重载是静态绑定,即在编译时就根据实参类型确定了调用哪个方法。

2.重写

重写的参数列表,返回类型(可以是父子类),访问限定符(不能更严厉),一般是不能修改的。

重写是动态绑定,即在编译时不能确定具体的调用方法,而在程序运行时,才能确定具体的被调用的方法。

即:方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现

3.代码举例

class Shape
    public void draw()
        System.out.println("画图形");
    


class Cycle extends Shape
    @Override
    public void draw() //子类Cycle对父类Shape的draw方法的重写
        System.out.println("⭕");
    


class Rect extends Shape
    @Override
    public void draw()//子类Rect对父类Shape的draw方法的重写
        System.out.println("长方形");
    

java--方法重写与重载

方法重写

/*方法重写(一般多用在继承上)
      定义:它是指子类和父类的关系,子类重写了父类的方法。    两个方法返回值、方法名、参数列表必须完全一致!
      出现原因:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。*/

class Person{
    private int age;
    private String name;
    public int getAge() {return age;}
    public void setAge(int age) {this.age = age;}
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public String getInfo(){return "名字是:"+getName()+",年龄是: "+getAge();}
}
class Student extends Person{
    private String school;
    public void setSchool(String school){ this.school = school;}
    public String getSchool(){ return school;}
    public String getInfo(){return "名字是:"+getName()+",年龄是: "+getAge()+",学校是:"+school;}//这里重写了父类的方法
}

public class Overiding {
     public static void main (String args[]){
            Student student = new Student();
            Person person = new Person();
            person.setAge(40);
            person.setName("张三");
            
            student.setAge(23);
            student.setName("李四");
            student.setSchool("育英中学");
            
            System.out.println(person.getInfo());
            System.out.println(student.getInfo());
        }
    
}

技术分享

 

 

方法重载

/*方法重载
      定义:在同一个类中相同的方法名,参数不同而已(参数类型不一样或参数数量不一样)
      出现原因:
               在编程过程中,是要遵守编程规范的,这就要求方法的命名是要有意义的,而有的方法可能面临着,会有不用的参数列表,
               这时会用到重载,这样,既可以表示方法的意义,又表示这些方法是相关方法,方便调用。
               所以,方法重载,很大程度是为了程序的可读性,即使不用,也是不会妨碍程序运行的。*/

class Car{
    public void Myf(int a) {System.out.println("我是方法1");}
    public void Myf(String a) {System.out.println("我是方法2");}
    public void Myf(String a,String b) {System.out.println("我是方法3");}
}

public class Overloading {
     public static void main (String args[]){
          Car car1=new Car();
          car1.Myf(2);//根据方法里的参数,掉用第一个方法
          car1.Myf("中");//根据方法里的参数,掉用第二个方法
          car1.Myf("中","国");//根据方法里的参数,掉用第三个方法
        }
    
}

技术分享

以上是关于java重写方法的主要内容,如果未能解决你的问题,请参考以下文章

java new对象的时候重写方法 是啥写法?

Java之方法重写方法重载多态

java 静态方法可以重载吗重写呢

java中,实现接口的方法的过程是重写吗?

JAVA自定义一个Button,重写了onTouchEvent 方法,出现的问题。

java啥是方法重写的语法规则?