美文网首页《IT藏经阁》
构造器(构造方法)是否可以被重写

构造器(构造方法)是否可以被重写

作者: 辽A丶孙悟空 | 来源:发表于2019-03-18 23:31 被阅读315次
  • 首先,构造器是不能被继承的,因为每个类的类名都不相同,而构造器名称与类名相同,所以根本谈不上继承。
  • 又由于构造器不能继承,所以就不能被重写。但是,在同一个类中,构造器是可以被重载的。
一、重载
  • 1.概念:对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候就构成方法重载。
  • 2.示例:
public class Test{  
public void a( ){  
};  
public void a( int i){  
 };  
}  
  • 说明:在Test类中有两个方法,名字都相同,都是a。在调用方法a时,如果不传参数,则系统会自动调用第一个方法a,如果传入一个 int 类型的参数,则系统调用第二个方法a。
public class Test{  
 public void a(int i){  
 };  
 public void a(String j){  
 };  
}  
  • 说明:在Test类中有两个同名的方法a。在调用方法时,如果传入一个int类型的参数,则会自动调用第一个a方法,如果传入一个String类型的参数,则会自动调用第二个方法a。
public class Test{  
 public void a(int i,String j){  
 }  
 public class a(String j,int i){  
 }  
}  
  • 说明:在Test类中有两个同名的方法。在调用方法时,如果传入的第一个参数类型为int,第二个参数类型为String,则自动调用第一个方法a。如果传入的第一个参数为String类型,第二个参数类型为int,则自动调用第二个方法a。
  • 3.作用:方法重载就是对不同数据类型的的数据实现相似的操作。
二,重写
  • 1.概念:

当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
重写也是覆盖 override

  • 2.前提:

必须要有继承关系

  • 3.特点:

(1):当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。
可以通过super关键字进行父类的重写函数的调用。
(2): 继承可以使得子类增强父类的方法

  • 4.细节:

(1): 函数名必须相同
(2):参数列表必须相同
(3): 子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访问权限否则编译报错
(4):子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不能返回比父类更大的数据类型

  • 5.示例:
class Animal{  
    int x=1;  
    String name;  
      
    void eat(){  
        System.out.println("吃东西");  
    }  
    void shout(){  
        System.out.println("我是动物");  
    }  
}  
  
class Dog extends Animal{  
      
    void eat(){  
        System.out.println("啃骨头");  
    }  
    void shout(){  
        System.out.println("旺旺");  
    }  
    void eat(String food){  
        System.out.println("吃:"+food);  
    }  
}  
class Cat extends Animal{  
  
    void eat(){  
        System.out.println("吃老鼠");  
    }  
    void shout(){  
        System.out.println("喵喵");  
    }  
}  
  
class Demo9{  
  
    public static void main(String[] args){  
        Dog d=new Dog();  
        d.shout();  
        d.eat();  
          
        Cat c=new Cat();  
        c.shout();  
        c.eat();  
        System.out.println();  
        }  

说明:
动物类有名字,有吃和叫的方法
狗继承动物重写父类吃和叫的方法
猫继承动物重写父类吃和叫的方法

三,重载和重写的不同
  • 1、重载(overload):
  • 前提: 所有的重载函数必须在同一个类中
  • 特点:
    函数名相同,参数列表不同,与其他的无关(访问控制符、返回值类型)
  • 不同:
    个数不同 、 顺序不同、 类型不同
  • 2:重写(override):
  • 前提: 继承
  • 特点:
    函数名必须相同、参数列表必须相同。
    子类的返回值类型要等于或者小于父类的返回值类型。

相关文章

网友评论

    本文标题:构造器(构造方法)是否可以被重写

    本文链接:https://www.haomeiwen.com/subject/rhoimqtx.html