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 "我是一名学生";
   }
}


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


相关文章
|
1天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
19天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
11天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
15天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
20天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
19天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
44 2
|
24天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
24天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
24天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
26 3
下一篇
无影云桌面