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 Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
75 9
|
1月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
153 57
|
6天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
56 8
|
1月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
44 4
|
1月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
39 4
|
1月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
26 1
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
135 4