教你从实战中领悟继承(中) | 带你学《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]) ;
    }         
}

image.png
图一 执行结果一

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

image.png
图二 统计设计

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()) ;      
    }         
}

image.png
图二 执行结果二

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

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

相关文章
|
25天前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
57 2
|
23天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
16 3
|
23天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
30 2
|
23天前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
28 2
|
23天前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
28 1
|
28天前
|
开发框架 Java 程序员
揭开Java反射的神秘面纱:从原理到实战应用!
本文介绍了Java反射的基本概念、原理及应用场景。反射允许程序在运行时动态获取类的信息并操作其属性和方法,广泛应用于开发框架、动态代理和自定义注解等领域。通过反射,可以实现更灵活的代码设计,但也需注意其性能开销。
44 1
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
1月前
|
Java
java继承和多态详解
java继承和多态详解
42 5
|
2月前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
60 9
Java——类与对象(继承和多态)
|
3月前
|
Java
Java 新手入门:Java 封装、继承、多态详解
Java 新手入门:Java 封装、继承、多态详解
38 1