教你从实战中领悟继承(中) | 带你学《Java面向对象编程》之四十三

上一篇:教你从实战中领悟继承(上) | 带你学《Java面向对象编程》之四十二
【本节目标】
通过阅读本节内容,你将对继承有更进一步的理解,并能够灵活结合继承进行结构化程序设计。

案例分析三(字符串统计)

编写程序, 统计出字符串“want you to know one thing”中字母n和字母o的出现次数。
对于本程序而言,最简单的操作方式就是直接在主方法里面定义一个操作,或者直接定义一个新的类进行处理。
范例:定义一个单独的处理类

class StringUtil {
    //返回的第一个内容为字母n的个数,第二个内容为字母o的个数
    public static int [] count(String str) {
        int countData [] = new int [2] ;
        char [] data = str.toCharArray() ;    //将字符串变为字符数组
        for (int x = 0 ; x < data.length ; x ++) {
           if (data[x] == ‘n’ || data[x] == ‘N’) {
              countData[0] ++ ;
           }
           if (data[x] == ‘o’ || data[x] == ‘O’) {
              countData[1] ++ ;
           }
         }
         return countData ;
    }
}
public class JavaDemo{
    public static void main(String args[]) {
        String str = “want you to know one thing” ;
        int result [] = StringUtil.count(str) ;
        System.ou.println(“字母n的个数:” + result[0]) ;
        System.ou.println(“字母o的个数:” + result[1]) ;
    }         
}

教你从实战中领悟继承(中)   | 带你学《Java面向对象编程》之四十三
图一 执行结果一

以上的解决方案严格来讲只是一种顺序式的思维模式解决的,假设说现在统计的是字母o或者n的个数,那么还有可能进行各种其它统计的设计。
字符串统计操作:

教你从实战中领悟继承(中)   | 带你学《Java面向对象编程》之四十三
图二 统计设计

class StringUtil {
    private String content ;  //需要保存字符串
    public StringUtil(String content) {
        this. content = content;
    }
    public String getContent() {
        return this.content ;
    }
    public String getInfo () {        //默认的信息返回
        return this.getContent(() ;
    }
}
class StringContent extends StringUtil {
    private int nCount ;
    private int oCount ;
    public StringContent (String content) {
        super(content) ;
        this.countChar() ;     //构造方法统计
    }
    public void countChar() {
        char [] data = super.getCount().toCharArray() ;    //将字符串变为字符数组
        for (int x = 0 ; x < data.length ; x ++) {
           if (data[x] == ‘n’ || data[x] == ‘N’) {
              this.nCount ++ ;
           }
           if (data[x] == ‘o’ || data[x] == ‘O’) {
              this.oCount ++ ;
           }
        }
    }
    public int getNCount() {
        return this.nCount ;
    }
    public int getOCount() {
        return this.oCount ;
    }
    public String getInfo() {
        return “字母n的个数:” + this.nCount + “字母o的个数:” + this.oCount ;
    }
}
public class JavaDemo{
    public static void main(String args[]) {
        StringCount sc = new StringCount(“want you to know one thing”) ; 
        System.out.println(sc.getInfo()) ;      
    }         
}

教你从实战中领悟继承(中)   | 带你学《Java面向对象编程》之四十三
图二 执行结果二

任何方案都可以,如果采用第一种方案比较直观,但是第二种方案更加适合于结构化的设计。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:教你从实战中领悟继承(下) | 带你学《Java面向对象编程》之四十四
更多Java面向对象编程文章查看此处

上一篇:SpringBoot开发案例从0到1构建分布式秒杀系统


下一篇:PolarDB-X 1.0-API参考-1.0(2019版本)-性能监控-DescribeDrdsInstanceDbMonitor