定义Java类

来自CloudWiki
跳转至: 导航搜索

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(),示意图如下所示:

Java3-6.png

思考:

1.Employee(员工类)除了上述那些,还可以拥有什么属性和行为 ?

2.如果我们为商院面馆的面条定义一个类,它会有哪些属性和行为呢 ?

问题:对象的属性用什么来表示呢?

答案:成员变量。

类的成员变量是用来描述属性信息的,因此大部分成员变量是以名词的形式出现,如姓名、颜色、大小等,如示例中的如这里的name,age,email等。

Java3-6.png

定义了变量成员后的类如下所示:

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就是成员方法

Java3-6.png

例如,我们可以在类中添加如下方法,修改商品的价格:

	
     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