} } }

    办法覆写

    添加时间:2013-8-5 点击量:

    想要办法覆写的,那么必须是持续关系才可以.,并且字段与办法都不克不及以private接见润饰符来润饰,不然子类讲不克不及持续。


    履行次序,调用办法时先到子类查找有没有该办法,若是有则履行该办法,若是没有就到父类去查找...............


    办法覆写时应遵守的原则是:一同两小一大


     


    一同:子类的办法必须与父类的办法雷同


    两小:


    1、子类办法的返回值类型必须是父类办法的返回值类型的子类或相等,也就 是子类办法的返回值类型必须比父类办法返回值类型小。


    2、子类办法声明抛出的异常应比父类抛出的异常更小或相等。


      一大:子类办法的接见权限必须比父类办法的接见权限大,比如:


    Public > protected > default > private



     1 package xiao.li.one;
    
    2
    3 public class 办法的复写
    4 {
    5 public static void main(String[] args)
    6 {
    7 Ostrich o = new Ostrich();//创建一个鸵鸟对象
    8 System.out.print(鸵鸟:);
    9 o.fly();
    10 Crow c = new Crow();//创建一个乌鸦对象
    11 System.out.print(乌鸦:);
    12 c.fly();
    13 / 输出成果为: 鸵鸟:我在飞
    14 乌鸦:我在飞
    15 上方这两个对象里没有创建fly()办法啊,可为什么也会输出Bird里的fly()办法?
    16 因为Ostrich类与Crow类都持续了Bird类,那么Ostrich和Crow类都是Bird类的子类,子类可以调用父类的办法与字段,
    17 在调用办法的时辰起首会在子类中查找有没有该办法,若是没有则到父类寻找。
    18 为什么要持续呢?因为它们都是属于鸟类。
    19
    20 我想问下,鸵鸟会飞吗? 必然不会啊,所以这个办法不合适请求。
    21 所以这时我们可以在鸵鸟类添加一个与父类一样的办法,然后批改办法体就OK了,这就形成了覆写。
    22
    23 那么办法覆写的时应遵守的原则(一同两小一大):
    24 一同:父类的办法与子类办法必须雷同
    25
    26 两小:
    27 1、子类办法的返回值类型必须是父类办法返回值类型的子类或相等,也就是子类办法的
    28 返回类型必须比父类办法的返回类型小,比如String就比Object小。
    29 2、子类办法声明抛出的异常应比父类办法声明的异常更小或相等。
    30
    31 一大:子类办法的接见权限必须比父类办法的接见权限大或相等,比如:
    32 public > protected > default > private;
    33 然则父类办法的接见权限是private的话,子类就不克不及覆写了。
    34 那么如何断定一个办法能不克不及覆写呢?
    35 直接在子类的办法上方 写 @override
    36
    37 /
    38 }
    39 }
    40 /
    41 鸟类
    42 /
    43 class Bird
    44 {
    45 protected void fly()
    46 {
    47 System.out.println(我在飞);
    48 }
    49 /
    50 private void fly() private润饰的话子类就不克不及持续了
    51 {
    52 System.out.println(我在飞);
    53 }
    54 /
    55 }
    56 /
    57 鸵鸟
    58 /
    59 class Ostrich extends Bird
    60 {
    61 public void fly()
    62 {
    63 System.out.println(Sorry,我不会飞,我只会跑);
    64 }
    65 }
    66 /
    67 乌鸦
    68 /
    69 class Crow extends Bird
    70 {
    71 // @Override
    72 // public void show() //如许的话在eclipse编译器里会主动报错,本办法不克不及覆写
    73 // {
    74 //
    75 // }
    76 }


    所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
    分享到: