漫漫人生路,学点Jakarta基础-重写(覆盖)、重载

    首先我们现在开始进入Jakarta的时代,由原甲骨文易主到 Eclipse基金会下,但是不想舍弃java名字,因此基金会重新投票选出了Jakarta EE(雅加达)。但是我们明白换汤汤不换药的道理,基础是不变的因此重新温习。

温习概念

  override:重写(=覆盖)-->一般在子类继承父类时,为了实现不同的功能,重写父类的方法。子类重写的方法与父类对应的方法的名称、返回类型、参数一样,存在垂直的关系。

    overload:重载-->同一个类中方法之间的关系,这些方法的名称相同但是参数形式不同,因此存在水平的关系。重载是根据调用的时参表和形参表、参数顺序(参数类型不同)来选择方法。简单说就是:方法重载就是类的同一种功能的多种实现方式,到底采用哪一种方式,取决于调用者给出的参数。

规则

    重载的规则:

    1.方法名必须一样,参数形式不同(参数的类型、个数、顺序至少有一项是不同)。      

 1 package bank;
 2 
 3 /**
 4  * Created by zjc on 2018/3/8.
 5  */
 6 public class overload
 7 {
 8     public float getCount(){
 9         return 0;
10     }
11     public int getCount(int a,int b){
12         return a+b;
13     }
14     public float getCount(float a, float b){
15             return a+b;
16     }
17     public float getCount(double c,float d){
18         return (float)c+d;
19     }
20     private float getCount(float d,double c){
21         return (float)c+d;
22     }
23     public static void main(String[] args) {
24         overload o = new overload();
25         System.out.println( o.getCount(2.3f,2.4f));
26     }
27 }
View Code

     ↑在此规则下:方法返回类型可以不同,方法的修饰符可以不同。

     其中参数类型相同时,参数顺序前后没区别,不能构成重载。

     

 

    2.不能通过访问权限、返回值类型、抛出异常进行重载(在1规则不符合的情况下);

     2.1如果只是返回类型不一样:不能够构成重载。

     

       2.2如果只是控制访问修饰符不一样:不能够构成重载。

     

 

    3.方法的异常类型、数目不会对重载造成影响;

   重写的规则

    1.重写(子类)与被重写(父类)方法的返回类型、参数、方法名称要一模一样,否则会编译出错。

 1 /**
 2  * Created by zjc on 2018/3/8.
 3  */
 4 public class override {
 5     public static void main(String[] args) {
 6         //创建一只猫
 7         Cat cat = new Cat();
 8         cat.cry();
 9         Dog dog = new Dog();
10         dog.cry();
11     }
12 }
13 class Animal{
14     int age;
15     String name;
16 
17     public void  cry(){
18         System.out.println("我是动物,不知道怎么叫!");
19     }
20 }
21 //加菲猫
22 class Cat extends  Animal{
23     //覆盖父类
24     public void cry(){
25         System.out.println("喵喵叫!");
26     }
27 }
28 //眼镜狗
29 class Dog extends  Animal{
30     //覆盖父类
31     public void cry(){
32         System.out.println("旺旺叫!");
33     }
34 }
View Code

    2.重写(子类)不能缩小被重写(父类)方法的访问权限(public > protected > default > private)。

       

     父类private 子类public这样可以重写

       

    3.重写(子类)与被重写(父类)方法的抛出的异常要一致,或者是其子类。

    4.被重写(父类)方法不能为private,否则子类只能定义新方法,不能进行重写。

    5.静态方法不能被重写为非静态的方法(编译出错)。

posted @ 2018-03-08 09:51  赵小叔  阅读(284)  评论(0编辑  收藏  举报