java 继承 扩展_JAVA中继承的应用、扩展和方法的重写【基础】

关于继承说明

定义两个类 Door 和 MyDoor ,如果其中MyDoor继承了 Door类,那么 MyDoor 就是子类, Door就是父类,子类继承了父类的所有方法和属性。子类可以对直接设置父类的属性和调用方法,也可以对父类的方法进行重写或扩展。但是,重写的方法在子类被实例化后,调用此方法时,输出的内容是子类的实现内容。如果要调用父类中被重写的方法,可以使用关键字:super进行调用

1、继承

父类:Door

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngDoor类

1 /**

2 * Door类3 */

4 packagecom.smile;5

6 public classDoor {7 private intheight;8

9 public intgetHeight() {10 returnheight;11 }12 public void setHeight(intheight) {13 this.height =height;14 }15

16 public voidopendoor(String doorName)17 {18 //19 System.out.println(doorName+" ,"+this.getHeight() +"m , is open");20

21 }22 }

子类:MyDoor

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.pngMyDoor类

1 /**

2 * 定义我的门,使其继承Door类3 * 1、继承使用关键字:extends4 */

5 packagecom.smile;6

7 public class MyDoor extendsDoor {8

9 String doorName="";10 public MyDoor(String doorName,intheight)11 {12 this.setHeight(height);//这步不可少,顺序不可乱,否者测试的时候,door的高度就为013

14 //继承了父类的opendoor方法

15 this.opendoor(doorName);16 this.doorName=doorName;17

18 }19

20 }

测试类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png测试类

1 packagecom.smile;2

3 public classStudyobject {4

5 /**

6 *@paramargs7 */

8 public static voidmain(String[] args) {9 //TODO Auto-generated method stub

10 System.out.println("Hello MyJava!");11

12

13 //继承测试代码调用

14 MyDoor myDoor =new MyDoor("MyDoor",123);15 //调用方法

16 myDoor.opendoor(myDoor.doorName);17

18

19

20 }21

22 }

2、继承的重写

重写就是在父类的属性、方法不适用的的情况下,对父类中的某些方法进行重新实现。被重写后,应用中使用实例化类调用该方法输出的是子类的实现内容,只有在使用关键字super进行调用输出的才是父类的实现内容。

这里父类不变,修改子类如下

子类代码:(重写后)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png重写后的子类

1 /**

2 * 定义我的门,使其继承Door类3 * 1、继承使用关键字:extends4 * 2、可以进行父类方法重写、扩展5 */

6 packagecom.smile;7

8 public class MyDoor extendsDoor {9

10 String doorName="";11 public MyDoor(String doorName,intheight)12 {13 this.setHeight(height);//这步不可少,顺序不可乱,否者测试的时候,door的高度就为014 //在重写情况下,使用super调用父类方法

15 System.out.println("在被重写的情况下,只有使用关键字super进行调用输出的才是父类的实现内容");16 super.opendoor(doorName);17

18 //继承了父类的opendoor方法

19 System.out.println("在被重写的情况下,调用的是子类的方法,实现的是子类的实现内容");20 this.opendoor(doorName);21 this.doorName=doorName;22

23 }24

25 //重写了父类opendoor方法

26

27 public voidopendoor(String doorName)28 {29 System.out.println(doorName+" is a automatic door");30 }31

32

33 }

测试类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png测试类

1 packagecom.smile;2

3 public classStudyobject {4

5 /**

6 *@paramargs7 */

8 public static voidmain(String[] args) {9 //TODO Auto-generated method stub

10 System.out.println("Hello MyJava!");11

12 //继承测试代码调用

13 MyDoor myDoor =new MyDoor("MyDoor",123);14 //调用方法

15 System.out.println("在未被重写的情况下,调用的是父类的方法,实现的是父类的实现内容");16 myDoor.opendoor(myDoor.doorName);17

18

19

20 }21

22 }23

3、继承的扩展

扩展就是在父类的属性、方法不够的的情况下,子类中对父类中的方法或属性进行补充。

这里父类不变,修改子类如下

子类(扩展后)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png扩展后的子类

/*** 定义我的门,使其继承Door类

* 1、继承使用关键字:extends

* 2、可以进行父类方法重写、扩展*/

packagecom.smile;public class MyDoor extendsDoor {

String doorName="";public MyDoor(String doorName,intheight)

{this.setHeight(height);//这步不可少,顺序不可乱,否者测试的时候,door的高度就为0//在重写情况下,使用super调用父类方法

System.out.println("在被重写的情况下,只有使用关键字super进行调用输出的才是父类的实现内容");super.opendoor(doorName);//继承了父类的opendoor方法

System.out.println("在被重写的情况下,调用的是子类的方法,实现的是子类的实现内容");this.opendoor(doorName);this.doorName=doorName;

}//重写了父类opendoor方法

public voidopendoor(String doorName)

{

System.out.println(doorName+" is a automatic door");

}//扩展

public voidClose()

{

System.out.println("MyDoor is close.");

}

}

测试类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png测试类

1 packagecom.smile;2

3 public classStudyobject {4

5 /**

6 *@paramargs7 */

8 public static voidmain(String[] args) {9 //TODO Auto-generated method stub

10 System.out.println("Hello MyJava!");11

12

13 //继承测试代码调用

14 MyDoor myDoor =new MyDoor("MyDoor",123);15 //调用方法

16 myDoor.opendoor(myDoor.doorName);17 //扩展方法调用

18 myDoor.Close();19

20

21 }22

23 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值