构造器(构造⽅法)是否可以被重写?
直接给出答案:
⾸先,构造器是不能被继承的,因为每个类的类名都不相同,⽽构造器名称与类名相同,所以根本谈不上继承。
⼜由于构造器不能继承,所以就不能被重写。但是,在同⼀个类中,构造器是可以被重载的。
这⾥再次给出重写和重载(Java)的含义和⼀些例⼦加深印象:
⼀,重载
1.概念:对于同⼀个类,如果这个类⾥⾯有两个或者多个重名的⽅法,但是⽅法的参数个数、类型、顺序⾄少有⼀个不⼀样,这时候局构成⽅法重载
2.⽰例:
[java]
1. public class Test{
2. public void a( ){
3. };
4. public void a( int i){
5. };
6. }
说明:在Test类中有两个⽅法,名字都相同,都是a。在调⽤⽅法a时,如果不传参数,则系统会⾃动调⽤第⼀个⽅法a,如果传⼊⼀个 int 类型的参数,则系统调⽤第⼆个⽅法a。
[java]
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。
[java]
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.⽰例:
[java]
1. class Animal{
2. int x=1;
3. String name;
4.
5. void eat(){
6. System.out.println("吃东西");
7. }
8. void shout(){
9. System.out.println("我是动物");
10. }
11. }
12.
java重写和重载的区别13. class Dog extends Animal{
14.
15.
16. void eat(){
17. System.out.println("啃⾻头");
18. }
19. void shout(){
20. System.out.println("旺旺");
21. }
22. void eat(String food){
23. System.out.println("吃:"+food);
24. }
25. }
26. class Cat extends Animal{
27.
28. void eat(){
29. System.out.println("吃⽼⿏");
30. }
31. void shout(){
32. System.out.println("喵喵");
33. }
34. }
35.
36. class Demo9{
37.
38. public static void main(String[] args){
39. Dog d=new Dog();
40. d.shout();
41. d.eat();
42.
43. Cat c=new Cat();
44. c.shout();
45. c.eat();
46. System.out.println();
47. }
说明:
动物类有名字,有吃和叫的⽅法
狗继承动物重写⽗类吃和叫的⽅法
猫继承动物重写⽗类吃和叫的⽅法
三,重载和重写的不同
1:重载(overload):
1:前提:所有的重载函数必须在同⼀个类中
2:特点:
函数名相同,参数列表不同,与其他的⽆关(访问控制符、返回值类型) 3:不同:
个数不同 、 顺序不同、 类型不同
2:重写(override):
1:前提:继承
2:特点:
函数名必须相同、参数列表必须相同。
⼦类的返回值类型要等于或者⼩于⽗类的返回值类型
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论