《IT藏经阁》

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

2019-03-18  本文已影响315人  辽A丶孙悟空
  • 首先,构造器是不能被继承的,因为每个类的类名都不相同,而构造器名称与类名相同,所以根本谈不上继承。
  • 又由于构造器不能继承,所以就不能被重写。但是,在同一个类中,构造器是可以被重载的。
一、重载
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。
二,重写

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

必须要有继承关系

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

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

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();  
        }  

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

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

猜你喜欢

热点阅读