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


    一、继承的基本概念:

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

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

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

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

    举个例子:

     1 public class Practice14 {
     2 
     3     /**
     4      * @param args
     5      */
     6     public static void main(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 class Anmial{
    16     protected String name;
    17     
    18     public Anmial(String name){
    19         System.out.println("animal");
    20     }
    21     
    22     protected void desc(){
    23         System.out.println(name);    
    24     }
    25 }
    26 //子类
    27 class Dog extends Anmial{
    28     /*public Dog(){
    29         
    30         System.out.println("无参");
    31     }*/
    32     public Dog(String name){
    33         //显示的调用父类构造方法
    34         super(name);
    35         this.name =name;
    36         System.out.println("dog");
    37     }
    38     public void print(){
    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 import java.util.Arrays;
      2 
      3 public class Practice14 {
      4     
      5     public static void main(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=new ImportCosmeticManager();
     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 extends CosmeticManager{
     33     public void list(){
     34         for(int i=0;i<super.count;i++){
     35             if("进口".equals(super.cosmetic[i].getType())){ //String类中的方法
     36                 super.cosmetic[i].print();
     37             }
     38         }
     39     }
     40 }
     41 
     42 //可按单价排序输出所有化妆品的类
     43 class SortCosmeticManager extends CosmeticManager{
     44     public void list(){
     45         Cosmetic[] cs=new Cosmetic[super.count];
     46         for(int i=0;i<cs.length;i++){
     47             cs[i]=cosmetic[i];
     48         }
     49         Cosmetic temp=null;
     50         for(int i=0;i<cs.length-1;i++){
     51             for(int j=0;j<cs.length-1-i;j++){
     52                 if(cs[j].getPrice()>cs[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<cs.length;i++){
     60             cs[i].print();
     61         }
     62     }
     63     
     64 }
     65 //化妆品管理类
     66 class CosmeticManager{
     67     protected Cosmetic[] cosmetic=new Cosmetic[3];
     68     protected int count=0;
     69     public void add(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 void list(){
     78         for(int i=0;i<count;i++){
     79             cosmetic[i].print();
     80         }
     81         
     82     }
     83     
     84 }
     85 
     86 //化妆品类
     87 class Cosmetic{
     88     private String name;
     89     private float price;
     90     private String type;
     91     public Cosmetic(){
     92         
     93     }
     94     public Cosmetic(String name,float price,String type){
     95         this.name=name;
     96         this.price=price;
     97         this.type=type;
     98     }
     99     public String getType() {
    100         return type;
    101     }
    102     public void setType(String type) {
    103         this.type = type;
    104     }
    105     public String getName() {
    106         return name;
    107     }
    108     public void setName(String name) {
    109         this.name = name;
    110     }
    111     public float getPrice() {
    112         return price;
    113     }
    114     public void setPrice(float price) {
    115         this.price = price;
    116     }
    117     public void print(){
    118         System.out.println(name+"	"+price+"	"+type);
    119     }
    120     public static void print1(){
    121         System.out.println("品牌	价格	类型");
    122     }
    123 }

     

  • 相关阅读:
    LightOJ 1139 8 puzzle + hdu 1043 Eight A*
    hdu 1180 优先队列 + bfs
    hdu 1270
    HDU Doing Homework
    hdu 1171 Big Event in HDU
    hdu 3613 (KMP)回文串
    POJ 3461 Oulipo(KMP)
    POJ 1565(DP状态压缩)
    NYOJ 634 万里挑一(优先队列)
    职场手记1_你想成文什么样的人
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/5063267.html
Copyright © 2020-2023  润新知