-
办法覆写
添加时间: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 }
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》