直接给出答案:
首先,构造器是不能被继承的,因为每个类的类名都不相同,而构造器名称与类名相同,所以根本谈不上继承。
又由于构造器不能继承,所以就不能被重写。但是,在同一个类中,构造器是可以被重载的。
这里再次给出重写和重载(Java)的含义和一些例子加深印象:
一,重载
1.概念:对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候局构成方法重载
2.示例:
1. public class Test{
2. public void a( ){
3. };
4. public void a( int i){
5. };
6. }
说明:在Test类中有两个方法,名字都相同,都是a。在调用方法a时,如果不传参数,则系统会自动调用第一个方法a,如果传入一个 int 类型的参数,则系统调用第二个方法a。
1. public class Test{
2. public void a(int i){
3. };
4. public void a(String j){
5. };
6. }
说明:在Test类中有两个同名的方法a。在调用方法时,如果传入一个int类型的参数,则会自动调用第一个a方法,如果传入一个String类型的参数,则会自动调用第二个方法a。
1. public class Test{
2. public void a(int i,String j){
3. }
4. public class a(String j,int i){
5. }
6. }
说明:在Test类中有两个同名的方法。在调用方法时,如果传入的第一个参数类型为int,第二个参数类型为String,则自动调用第一个方法a。如果传入的第一个参数为String类型,第二个参数类型为int,则自动调用第二个方法a。
3.作用:
方法重载就是对不同数据类型的的数据实现相似的操作。
二,重写
1.概念:
当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
重写也是覆盖 override
2.前提:
必须要有继承关系
3.特点:
(1):当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。
super关键字进行父类的重写函数的调用。
(2): 继承可以使得子类增强父类的方法
4.细节:
(1): 函数名必须相同
(2):参数列表必须相同
(3): 子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访
问权限否则编译报错
(4):子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不能返回比父类更大的数据类型
5.示例:
1. class Animal{
2. int x=1;
3. String name;
4.
5. void eat(){
6. "吃东西");
7. }
8. void shout(){
9. "我是动物");
10. }
11. }
12.
13. class Dog extends Animal{
14.
15.
16. void eat(){
17. "啃骨头");
18. }
19. void shout(){
20. "旺旺");
21. }
22. void eat(String food){
23. "吃:"+food);
24. }
25. }
26. class Cat extends Animal{
27.
28. void eat(){
29. "吃老鼠");
30. }
31. void shout(){
32. "喵喵");
33. }
34. }
35.
36. class Demo9{
37.
38. public static void main(String[] args){
39. new Dog();
40. d.shout();
41. d.eat();
42.
43. new Cat();
44. c.shout();
45. c.eat();
46. System.out.println();
47. }
说明:
动物类有名字,有吃和叫的方法
狗继承动物重写父类吃和叫的方法
猫继承动物重写父类吃和叫的方法
三,重载和重写的不同
1:重载(overload):
:前提: 所有的重载函数必须在同一个类中
:特点:
(访问控制符、返回值类型)
:不同:
个数不同 、 顺序不同、 类型不同
2:重写(override):
:前提: 继承
:特点:
函数名必须相同、参数列表必须相同。
子类的返回值类型要等于或者小于父类的返回值类型