200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java继承案例分析_Java面向对象_继承——基本概念以及管理化妆品实例分析

java继承案例分析_Java面向对象_继承——基本概念以及管理化妆品实例分析

时间:2020-04-07 08:00:02

相关推荐

java继承案例分析_Java面向对象_继承——基本概念以及管理化妆品实例分析

一、继承的基本概念:

1.继承是面向对象三大特征之一

2.被继承的类成为父类(超类),继承父类的类成为子类(派生类)

3.继承是指一个对象直接使用另一个对象的属性和方法

4.通过继承可以实现代码重用

举个例子:

1 public classPractice14 {2

3 /**

4 *@paramargs5 */

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

8 Dog dog=new Dog("花花");9 dog.print();10 dog.desc();//直接调用父类的desc方法

11

12 }13 }14 //父类

15 classAnmial{16 protectedString name;17

18 publicAnmial(String name){19 System.out.println("animal");20 }21

22 protected voiddesc(){23 System.out.println(name);24 }25 }26 //子类

27 class Dog extendsAnmial{28 /*public Dog(){29

30 System.out.println("无参");31 }*/

32 publicDog(String name){33 //显示的调用父类构造方法

34 super(name);35 this.name =name;36 System.out.println("dog");37 }38 public voidprint(){39 System.out.println("我的名字:"+name);40 }41 }

二、继承的限制

1.java中只能实现单继承,也就是一个类只能有一个父类

2.允许多层继承,即一个子类可以有一个父类,一个父类还可以有其它的父类

3.继承只能继承非私有的属性和方法

4.构造方法不能被继承

子类的实例化过程:子类实例化时会先调用父类的构造方法

如果父类中没有默认的构造方法,在子类的构造方法中必须显示的调用父类的构造方法(super())

三、方法重写(发生在子类和父类之间,子类不想完全继承分类的方法)的特征

1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)

2.子类抛出的异常不能超过父类相应方法的异常(子类异常不能大于父类异常)

3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

下面举个实例:

实现一个化妆品商城中的化妆品管理

1.定义一个化妆品类(Cosmetic)

2.定义一个化妆品管理类(CosmeticManager)

(1)实现进货功能

(2)可以输出所有化妆品信息功能

3.使用继承实现一个可按单价排序输出所有化妆品的功能

4.使用继承实现一个只输出进口化妆品的功能

1 importjava.util.Arrays;2

3 public classPractice14 {4

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

7 Cosmetic.print1();8 /*CosmeticManager a1=new CosmeticManager();9 a1.add(new Cosmetic("韩束",54.88f,"进口"));10 a1.add(new Cosmetic("百雀羚",84.60f,"国产"));11 a1.add(new Cosmetic("香奈儿",500.0f,"进口"));12 a1.add(new Cosmetic("大宝",10.0f,"国产"));13 a1.list();*/

14

15 /*SortCosmeticManager a1=new SortCosmeticManager();16 a1.add(new Cosmetic("韩束",54.88f,"进口"));17 a1.add(new Cosmetic("百雀羚",84.60f,"国产"));18 a1.add(new Cosmetic("香奈儿",500.0f,"进口"));19 a1.add(new Cosmetic("大宝",10.0f,"国产"));20 a1.list();*/

21

22 ImportCosmeticManager a1=newImportCosmeticManager();23 a1.add(new Cosmetic("韩束",54.88f,"进口"));24 a1.add(new Cosmetic("百雀羚",84.60f,"国产"));25 a1.add(new Cosmetic("香奈儿",500.0f,"进口"));26 a1.add(new Cosmetic("大宝",10.0f,"国产"));27 a1.list();28

29 }30 }31 //实现只输出进口化妆品的类

32 class ImportCosmeticManager extendsCosmeticManager{33 public voidlist(){34 for(int i=0;i

36 super.cosmetic[i].print();37 }38 }39 }40 }41

42 //可按单价排序输出所有化妆品的类

43 class SortCosmeticManager extendsCosmeticManager{44 public voidlist(){45 Cosmetic[] cs=new Cosmetic[super.count];46 for(int i=0;ics[j+1].getPrice()){53 temp=cs[j];54 cs[j]=cs[j+1];55 cs[j+1]=temp;56 }57 }58 }59 for(int i=0;i

64 }65 //化妆品管理类

66 classCosmeticManager{67 protected Cosmetic[] cosmetic=new Cosmetic[3];68 protected int count=0;69 public voidadd(Cosmetic c){70 if(count>=cosmetic.length){71 int newLen=cosmetic.length*3/2+1;72 cosmetic=Arrays.copyOf(cosmetic, newLen);73 }74 cosmetic[count]=c;//顺序不能调换

75 count++;76 }77 public voidlist(){78 for(int i=0;i

82 }83

84 }85

86 //化妆品类

87 classCosmetic{88 privateString name;89 private floatprice;90 privateString type;91 publicCosmetic(){92

93 }94 public Cosmetic(String name,floatprice,String type){95 this.name=name;96 this.price=price;97 this.type=type;98 }99 publicString getType() {100 returntype;101 }102 public voidsetType(String type) {103 this.type =type;104 }105 publicString getName() {106 returnname;107 }108 public voidsetName(String name) {109 this.name =name;110 }111 public floatgetPrice() {112 returnprice;113 }114 public void setPrice(floatprice) {115 this.price =price;116 }117 public voidprint(){118 System.out.println(name+"\t"+price+"\t"+type);119 }120 public static voidprint1(){121 System.out.println("品牌\t价格\t类型");122 }123 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。