定义Java类
Java中的类
Java是一种面向对象程序设计语言,任何一个Java程序都是以类的形式存在
设计程序的过程首先就需要从现实问题中找出可实现的类,并用Java语句进行定义。
类是一系列具有相同特征的对象的总称,如 面条类是 炸酱面,打卤面的总称
类是抽象的,对象是具体的,我们可以使用类的构造方法 构造出一个个具体的对象。
类的构造方法
现在我们的Noodles类的代码如下:
public class Noodles { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("商院面馆欢迎您!"); } }
前面我们讲过,类是我们的模板,对象是用类“生产”出来的产品,
那么,怎样创建一个类的对象呢?或者说怎么用模板来生成产品呢 ?
答案就是构造方法。
构造,英文名construction ,是建造、创造的意思。每次在创建实例变量,构造方法就是我们用来生产一个个对象的模具。
public class Noodles { public Noodles(){ } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("商院面馆欢迎您!"); Noodles n1 = new Noodles();//构造了一个面条的订单 System.out.println(n1); Noodles n2 = new Noodles();//构造了又一个面条的订单 System.out.println(n1); } }
类的成员变量
一个Java类,除了构造方法,一般还有两个组成部分,它用于描述属性的部分叫做类的成员变量;用于描述行为的部分叫做类的成员方法。
因此,类也被认为是一种抽象数据类型,这种数据类型不但包括数据,还包括方法。
如在员工管理系统中,我们需要定义一个雇员类,他能描述每个雇员的姓名、年龄、邮箱地址等信息,他还提供修改雇员信息的动作即方法,那我们就可以定义一个Employee类,它包含属性name、age和email,以及操作方法modifyInfo(),示意图如下所示:
思考:
1.Employee(员工类)除了上述那些,还可以拥有什么属性和行为 ?
2.如果我们为商院面馆的面条定义一个类,它会有哪些属性和行为呢 ?
问题:对象的属性用什么来表示呢?
答案:成员变量。
类的成员变量是用来描述属性信息的,因此大部分成员变量是以名词的形式出现,如姓名、颜色、大小等,如示例中的如这里的name,age,email等。
定义了变量成员后的类如下所示:
import java.util.Scanner; public class Noodles { //商品的名称 public String name; //商品的价格 public float price; //商品的数量, public int num; public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("请问您需要几碗面?"); String str = sc.nextLine(); int num = Integer.parseInt(str); Noodles n1= new Noodles();//声明一个Noodle类的对象n1 n1.name="家常手擀面";//给变量赋值 n1.price = 10;//给变量赋值 n1.num = 2;//给变量赋值 System.out.print("您点的是"+n1.name);//打印变量 System.out.print(" 价格:"+n1.price);//打印变量 System.out.println(" 数量"+ n1.num);//打印变量 } }
类的成员方法
- 对象的动作用什么表示呢 ?
答案:类的成员方法。
- 类的方法又被称为成员方法(函数),用来描述动作、行为和功能,是一段完成某种功能或操作的代码段,因此大部分方法是以动词形式出现,如:吃、学习、启动等。我们一般用成员变量表示该类对象的属性,用成员方法表示该类对象的动作。
方法包括方法名、方法返回值、方法参数三个要素,以及修饰符和一段用来完成某项动作或功能的方法体。
- 方法定义的格式:
[访问修饰符]< 修饰符 >返回值类型 方法名称 ([参数列表]) {方法体}
下图中的nmodifyInfo()、addInfo就是成员方法
例如,我们可以在类中添加如下方法,修改商品的价格:
public void setPrice(float p) { this.price =p; }
然后在main方法中调用这个方法:
n1.setPrice(15);
完整代码
import java.util.Scanner; public class Noodles { //商品的名称 public String name; //商品的价格 public float price; //商品的数量, public int num; public Noodles(){ } public void setPrice(float p) { this.price =p; } //更改商品名称 public void setName(String s) { } //更改商品数量 public void setNum(int n) { } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("商院面馆欢迎您!"); Scanner sc = new Scanner(System.in); System.out.println("请问您需要几碗面?"); String str = sc.nextLine(); int num = Integer.parseInt(str); Noodles n1= new Noodles();//声明一个Noodle类的对象n1 n1.name="家常手擀面";//给变量赋值 n1.price = 10;//给变量赋值 n1.num = 2;//给变量赋值 System.out.print("您点的是"+n1.name);//打印变量 System.out.print(" 价格:"+n1.price);//打印变量 System.out.println(" 数量"+ n1.num);//打印变量 n1.setPrice(15); System.out.print("不好意思,商品价格变更为:"+n1.price);//打印变量 //变更商品的名称 //变更商品的数量 } }
练习
运行一下“定义Java类”一节后面的代码,完成以下练习:
1)在main中新建一个面条类的对象n2 ,
2)尝试为面条类添加新的属性(口味、重量、颜色等),并打印出面条对象n2的这些属性
3)为为面条类添加两个新方法 更改商品名称的方法setName, 更改数量的方法 setNum ,并为面条对象n2执行这些方法。
2. 创建银行卡类Card,具体要求
(1)Card类包含卡号no、户主名name、余额balance三个私有化成员变量。
(2)提供三个私有化成员变量的getter和setter方法,并满足余额不能小于0。若余额小于0时默认设置为0。
(3)在Card类中重写toString()方法,按“卡号,户主名,余额”格式返回银行卡的详细信息。 例如:620012,李四,3000
(4) 继续创建CardTest测试类,该类中存在main方法。在main方法中实现: ① 用Card的无参构造方法创建一张银行卡card1,然后给card1成员变量赋值,之后再控制台输出card1的详细信息。
(5) 用Card的带参数构造方法创建一张银行卡card2,然后在控制台输出card2的详细信息。
20200320 作品点评
- 类名首字母大写,驼峰命名
- 类的方法和变量加上注释,便于别人和自己理解
- 成员方法采用小驼峰命名法,首字母小写
- 类和成员方法的命名尽量有意义
参考文档:
【1】 深入浅出UML类图 http://www.uml.org.cn/oobject/201211231.asp