Java类的无参方法-1

简介: 本章工作任务实现计算平均分和课程总成绩实现“我行我素购物管理系统”入口程序实现“我行我素购物管理系统”菜单类实现“我行我素购物管理系统”菜单切换

本章工作任务


实现计算平均分和课程总成绩

实现“我行我素购物管理系统”入口程序

实现“我行我素购物管理系统”菜单类

实现“我行我素购物管理系统”菜单切换

本章技能目标


会定义和使用类的方法


理解变量作用域


会添加类方法的JavaDoc注释


本章介绍


在第11章的学习中,我们一起进入了面向对象的编程世界,对它的一些基本概念一类、对象有了一定的了解,并且能使用Java语言定义类、类的属性和方法。从本章开始,将对类的方法进行深入学习。利用好方法实现一个独立的功能,将对今后的编程生活产生极大的影响。理解了方法的意义,还需要了解变量的作用域的概念,为深入学习带参方法打下坚实的基础。


技术内容


12.1 类的方法概述

12.1.1 什么是类的方法

类是由一组具有相同属性和共同行为的实体抽象而来的。对象执行的操作是通过编写类的方法实现的。显而易见,类的方法是一个功能模块,其作用是"做一件事情"。例如,在童年时代,大家可能玩过电动玩具。图12.1所示是一只"电动玩具狮子",在它身上有两个按钮,如果按动按钮,电动狮子就会跑或叫。


图12.1电动玩具狮子


下面就创建一个电动狮子(AutoLion)类,它的属性和行为如示例1所示。


示例1

package cn.jbit.dlc1;
public class AutoLion2 {
    String color = "黄色";
    //跑方法
    public void run() {
        System.out.println("正在以0.1米/秒的速度向前奔跑。");
    }
    //叫方法
    public void cry() {
        System.out.println("大声吼叫!");
    }
    //抢球方法
    public String robBall() {
        String ball = "球";
        return ball;
    }
}


在示例1中,AutoLion类定义了三个行为(方法):跑、叫和抢球。在玩电动玩具时,只要按动 "奔跑" 按钮,电动狮子就能跑,但是它为什么能跑呢?其实,它为什么能跑是生产电动狮子的厂商要思考的问题,我们不需要知道电动狮子的内部构造,只要按动这个按钮就可以了。电动狮子能跑能叫的内部实现就相当于类中的方法,这样的优点正是类提供给我们的。


类的每一个方法都实现了一个功能。例如,第11章编写的showcenter()方法,它的作用就是输出中心的信息,创建类的对象之后,可以直接调用这个方法,而不再去考虑这个方法是如何实现的。同样,对于示例1定义的run()、cry()和robBall ()方法,也可以直接调用。可见,类的方法定义了类的某种行为(功能),而且方法的具体实现封装在类中,实现了信息隐藏。


12.1.2 如何定义类的方法

类的方法必须包括以下三个部分。


方法的名称。

方法的返回值类型。

方法的主体。

语法:


public 返回值类型 方法名() {


//方法的主体


}


通常,编写方法时,分两步完成。


第一步:定义方法名和返回值类型。


第二步:在中编写方法的主体部分。


在编写方法时,要注意以下三点。


方法体放在一对大括号中。方法体就是一段程序代码,完成一定的工作。

方法名主要在调用这个方法时使用。在Java中一般采用骆驼式命名法。

方法执行后可能会返回一个结果,该结果的类型称为返回值类型。使用return语句返回值。

语法:


return表达式;


例如,在robBall() 方法中,返回值类型是String,因此在方法体中必须使用return返回一个字符串。


如果方法没有返回值,则返回值类型为void。例如,run()和cry()方法没有返回值,所以返回值类型为void。


因此,在编写程序时一定要注意方法声明中返回值的类型和方法体中真正返回值的类型是否匹配。如果不匹配,编译器就会报错。


其实这里的return语句是跳转语句的一种,它主要做两件事情。


跳出方法。意思是 "我已经完成了,要离开这个方法"。

给出结果。如果方法产生一个值,这个值放在return后面,即<表达式〉部分,意思是"离开方法,并将<表达式〉的值返回给调用它的程序"。就像我们按动按钮,电动狮子就会跑,这个"跑"就是方法返回的一个结果。

12.1.3 方法调用

定义了方法就要拿来使用。例如,在第11章我们定义了 showCenter()方法,用来输出相关信息。简单地说,在程序中通过使用方法名称从而执行方法中包含的语句,这一过程就称为方法调用。方法调用的一般形式如下。


语法:


对象名.方法名();


Java中类是程序的基本单元。每个对象需要完成特定的应用程序功能。当需要某一对象执行一项特定操作时,通过调用该对象的方法来实现。另外,在类中,类的不同成员方法之间也可以进行相互调用。接下来,就来分析下面的问题。


问题:小明过生日,爸爸送给他一个电动狮子玩具,编写程序测试这个狮子能否正常工作(能跑、会叫、显示颜色)。


分析:现在要模拟玩电动狮子的过程。按动控制狮子叫的按钮,它就会发出叫声;按动控制狮子跑或抢球的按钮,狮子就会奔跑或抢球。因此,根据要求,需要定义两个类:电动狮子类 ( AutoLion) 和测试类 (TestLion)。其中,TestLion类中定义程序入口 ( main()方法),检测跑和叫的功能是否可以正常运行。


示例2


电动狮子类:


package cn.jbit.dlc1;
    /*
    * AutoLion.java
    * 电动玩具类
    */
public class AutoLion {
    String color = "黄色"; // 颜色
    /*
     * 跑
     */
    public void run() {
        System.out.println("正在以0.1米/秒的速度向前奔跑。");
    }
    public String robBall() {
        String ball = "球";
        return ball;
    }
    /*
     * 获得颜色
     */
    public String getColor() {
        return color;
    }
    /*
     * 显示狮子特性
     */
    public String showLion() {
        return "这是一个" + getColor() + "的玩具狮子!";
        // 另一种方式
        //return "这是一个" + color + "的玩具狮子!";
    }
}

测试类:


public class TestLion {
    public static void main(String[] args) {
        AutoLion lion = new AutoLion();                       //创建AutoLion对象
        String info=lion.showLion();                          //调用方法并接收方法的返回值
        System.out.println(info);                             //显示类信息
        lion.run();                                              //调用跑方法
        System.out.println("抢到一个" + lion.robBall());   //调用其抢球方法
    }
}


程序运行结果如图12.2所示。


图12.2示例2的运行结果


在示例2中可以看到,类的成员方法相对独立地完成了某个应用程序功能,它们之间可以相互调用,调用时仅仅使用成员方法的名称。在本示例中,方法getColor()的功能是获得电动狮子的颜色,在showLion()方法中可以直接调用。


return "这是一个" + getColor() + "的玩具狮子!";


showLion()是类的成员方法,因此它可以直接调用这个类的另一个成员方法getColor(),调用时直接引用方法的名称getColor()就可以了。


但是,其他类的方法要调用AutoLion类的成员方法时,就必须首先创建这个类的一个对象,然后才能通过操作符使用它的成员方法。


AutoLion lion = new AutoLion();                         //创建AutoLion对象


lion.run();                                                 //调用跑方法


如果类的方法有返回值,调用时便可以得到它的返回值。例如:


String info=lion.showLion();                             //调用方法并接收方法的返回值


System.out.println("抢到一个" + lion.robBall());       //调用其抢球方法


showLion()方法的返回值类型是String,可以用一个String类型的变量info来接收它的返回值。robBall()方法的返回值类型也是String,代码中将调用之后得到的返回值直接在控制台输出。对于有返回值的方法,这两种处理返回值的方式都是常见的。


总之,凡涉及类的方法的调用,均使用如下两种形式。


同一个类中的方法,直接使用方法名调用该方法。

不同类的方法,首先创建对象,再使用"对象名.方法名()"来调用。

12.1.4 常见错误

在编写方法及调用方法时,一定要细心,避免出现以下错误。


常见错误1


package cn.jbit.classandobject;
public class Student1{
   public void showInfo(){
              return "我是一名学生";
       }
}


原因分析:方法的返回值类型为void,方法中不能有return语句。


常见错误2


package cn.jbit.classandobject;
public class Studen2{
   public double getInfo(){
              double weight = 95.5;
              double height = 1.69;
      return weight, height;
       }
}


原因分析:方法不能返回多个值。


常见错误3


package cn.jbit.classandobject;
public class Student3{
   public String showInfo(){
      return "我是一名学生";
      public double getInfo(){
                  double weight = 95.5;
                  double height = 1.69;
             return weight;
           }
       }
}

原因分析:多个方法不能相互嵌套定义。例如,不能将方法getlnfo()定义在方法showinfo()中。


常见错误4

package cn.jbit.classandobject;
public class Student4{
   int age = 20;
   if(age<20){
       System.out.println("年龄不符合入学要求!"); 
   }
   public void showInfo(){
      return "我是一名学生";
   }
}


原因分析:不能在方法外部直接写程序逻辑代码。


目录
打赏
0
0
0
0
2
分享
相关文章
|
3月前
|
Java 中的 toString() 方法详解:为什么它如此重要?
在Java开发中,`toString()`方法至关重要,用于返回对象的字符串表示。默认实现仅输出类名和哈希码,信息有限且不直观。通过重写`toString()`,可展示对象字段值,提升调试效率与代码可读性。借助Lombok的`@Data`注解,能自动生成标准化的`toString()`方法,简化开发流程,尤其适合字段较多的场景。合理运用`toString()`,可显著提高开发效率与代码质量。
170 0
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
70 6
Java 面试资料中相关代码使用方法与组件封装方法解析
Java 期末考试救急必备涵盖绝大多数核心考点及五大类经典代码助你过关
本文为Java期末考试复习指南,涵盖基础语法、面向对象编程、异常处理、文件操作、数据库连接五大核心考点,提供详细解析与实用代码示例,助力快速掌握重点,高效备考,轻松应对考试。
26 0
Java 编程进阶实操中工具集整合组件封装方法与使用指南详解
本文详细介绍Hutool工具集和图书管理系统相关组件的封装方法及使用示例。通过通用工具类封装(如日期格式化、字符串处理、加密等)、数据库操作封装(结合Hutool DbUtil与MyBatis)、前端Vue组件封装(图书列表与借阅表单)以及后端服务层封装(业务逻辑实现与REST API设计),帮助开发者提升代码复用性与可维护性。同时,提供最佳实践建议,如单一职责原则、高内聚低耦合、参数配置化等,助力高效开发。适用于Java编程进阶学习与实际项目应用。
115 10
Java并发包下Atomic相关类的使用
本文介绍了 `java.util.concurrent.atomic` 包下的各类原子类及其使用场景,包括基本类型原子类(如 `AtomicInteger`、`AtomicLong`)、数组类型原子类(如 `AtomicIntegerArray`)、引用类型原子类(如 `AtomicReference`)、对象属性修改原子类(如 `AtomicIntegerFieldUpdater`)以及原子操作增强类(如 `LongAdder` 和 `LongAccumulator`)。同时,详细对比了不同原子类在高并发场景下的性能表现,展示了 `LongAdder` 的高效性。
93 31
Java实现利用GeoLite2-City.mmdb根据IP定位城市的方法
在城市,国家,地区等地理位置数据获取之后,你可以依指定的业务需求,来进行进一步的数据处理。例如,你可以设计一个应用,根据用户的 IP 地址来个性化地展示内容,或者用于分析网络请求的来源等。
389 20
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
77 9
|
2月前
|
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
49 0
|
2月前
|
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
215 0
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问