标签:ash 顺序 构造方法 override 构造 overload 构造函数 obj art
重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关。
重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。
(1):方法名必须相同
(2):方法的参数列表一定不一样。
(3):访问修饰符和返回值类型可以相同也可以不同。
其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。
代码示例:
1 public class Test1 { 2 public void out(){ 3 System.out.println("参数"+null); 4 } 5 //参数数目不同 6 public void out(Integer n){ 7 System.out.println("参数"+n.getClass().getName()); 8 } 9 10 //参数类型不同 11 public void out(String string){ 12 System.out.println("参数"+string.getClass().getName()); 13 } 14 15 public void out(Integer n ,String string){ 16 System.out.println("参数"+n.getClass().getName()+","+string.getClass().getName()); 17 } 18 //参数顺序不同 19 public void out(String string,Integer n){ 20 System.out.println("参数"+string.getClass().getName()+","+n.getClass().getName()); 21 } 22 23 public static void main(String[] args) { 24 Test1 test1 = new Test1(); 25 test1.out(); 26 test1.out(1); 27 test1.out("string"); 28 test1.out(1,"string"); 29 test1.out("string",1); 30 } 31 }
重写发生在父类子类之间,比如所有类都是继承与Object类的,Object类中本身就有equals,hashcode,toString方法等.在任意子类中定义了重名和同样的参数列表就构成方法重写。
重写(override):一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同。
重写的特征:
(1):方法名必须相同,返回值类型必须相同
(2):参数列表必须相同
(3):访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected
(4):子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法
(5):构造方法不能被重写
简单而言:就是具体的实现类对于父类的该方法实现不满意,需要自己在写一个满足于自己要求的方法。
代码示例:
1 class Test{ 2 public void out(){ 3 System.out.println("我是父类方法"); 4 } 5 } 6 7 public class Test1 extends Test{ 8 @Override 9 //方法签名完全一致 10 public void out() { 11 System.out.println("我是重写后的子类方法"); 12 } 13 14 public static void main(String[] args) { 15 Test test = new Test(); 16 test.out(); 17 test = new Test1(); 18 test.out(); 19 } 20 }
参考:https://blog.csdn.net/qq_42014192/article/details/89707483
标签:ash 顺序 构造方法 override 构造 overload 构造函数 obj art
原文地址:https://www.cnblogs.com/116970u/p/11440630.html