Java类的成员方法

来自CloudWiki
跳转至: 导航搜索


成员方法的定义

方法定义的目的是让其他类进行调用使之发挥方法执行的功能。

方法的使用的一般前是必须先创建对象,然后使用“.”操作符实现对其方法的调用,方法中的局部变量被分配内存空间,方法执行完毕,局部变量即刻释放内存。使用方法的格式如下:

[数据类型 接收变量名=]对象名.方法名([实参1,实参2,……]);

在类中添加如下代码:

	//修改价格
	public void setPrice(float p) {
		this.price=p;
	}
	//获得价格
	public float getPrice() {
		float j= this.price;
		return j;
	}

方法的名称

方法名称:可以是任何Java合法标识符,一般要求方法名字要有意义,并且首字母小写。例如:定义一个获得姓名的方法名,可以写作getName()。 。

方法的参数

参数列表:参数是方法接收调用者信息的唯一途径,Java允许将参数值传递到方法中。多个参数用逗号分开,每一个参数都要包含数据类型和参数名

方法中的参数一般称为形式参数(简称形参),而由调用者传入的参数称之为实际参数(简称实参)。

举例说明:

实参:

float p=15.5f;
n1.setPrice(float p);

形参:

public void setPrice( float p){
    price = p;
}

【注意】

  1. 形参和实参的类型必须要一致,或者要符合隐含转换规则。
  2. 形参类型不是引用类型时,在调用该方法时,是按值传递的。在该方法运行时, 形参和实参是不同的变量,它们在内存中位于不同的位置,形参将实参的值复制一份,在该方法运行结束的时候形参被释放,而实参内容不会改变。
  3. 形参类型是引用类型时,在调用该方法时,是按引用传递的。运行时,传给方法的是实参的地址,在方法体内部使用的也是实参的地址,即使用的就是实参本身对应的内存空间。所以在函数体内部可以改变实参的值。

方法的返回值

方法调用的目的是要执行方法的功能,若方法执行完毕并有返回值,那么这个返回值是相当重要

方法可以有返回值,如下面这个方法的返回值类型为float,在方法的定义中直接定义了返回值的类型

public float getPrice( ){
	       System.out.println("该商品的价格为 : " + price); 
	       return price;
	}

我们通常用一个变量来存储方法的返回值。变量的数据类型与方法的返回值类型一样。

float now_price = b1.getPrice();//获取书的价格

方法也可以没有返回值,如下面的方法标记返回值为空(void)

public void setPrice(float p) {
		this.price =p;
	}

注意:返回值类型。表示方法返回值的类型。如果方法不返回任何值,它必须声明为 void(空)。对于不返回void类型的方法必须使用return语句。方法返回值类型必须与return语句后面的表达式数据类型一样。例如,方法中含有语句return "Java";那么方法的返回值类型必须是String类型。

应用:toString方法

一般每个类都有个toString方法,描述该类的信息。

	
       public String toString() {
		String str ="您点的是"+this.name+ 
				    " 价格:"+this.price+
				    " 数量:"+ this.num;
		return str;
	}

成员方法的调用

定义好类的方法后,我们就可以在main方法或其他类中对它进行调用。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("商院面馆欢迎您!");
		Noodles n1 = new Noodles();//构造了一个面条的订单
		n1.name="炸酱面";//给变量赋值
                n1.price = 10;//给变量赋值
                n1.num = 3;//给变量赋值
                System.out.print("您点的是"+n1.name);//打印变量
                System.out.print(" 价格:"+n1.price);//打印变量
                System.out.println(" 数量"+ n1.num);//打印变量
		System.out.println(n1);		
		//调用成员方法
		n1.setPrice(13);		
		float k=n1.getPrice();
		System.out.println("调价后"+k);
		System.out.println(n1.toString());
		
		
		
		
	}

方法的其他用法

类方法之间的调用

如果两个方法在同一类中,可以直接使用该方法名字进行调用。 如:


public class Book {
	String bid; // 书籍编号
	String name; // 书籍名字
	String author; // 书籍作者
	int number; // 书籍库存
	String category; // 书籍详细分类(类目)
	float price;
	public void setPrice( float p){
	       price = p;
	   }
	 
	public float getPrice( ){
	       System.out.println("该书的价格为 : " + price); 
	       return price;
	}
	public float getValue( ){
		   float value = price * number;
	       System.out.println("该书的总库存为 : " + value); 
	       return value;
	}
	public void getInfo(){
		System.out.println("书籍名称 : " + name);
		getPrice( );
		getValue( );	       
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Book b1;          //声明一个Book类的对象b1
		b1= new Book (); //是用new关键字实例化Book对象并赋值给b1
		b1.name = "笑傲江湖";	b1.author = "金庸";
		System.out.println("b1.name="+b1.name);
		System.out.println("b1.author="+b1.author);
		
		float p=15.5f;
		b1.setPrice(p);//给书籍定价
		float now_price = b1.getPrice();//获取书的价格
		b1.getInfo();
		
		
	}

}


完整代码

public class Noodles {
	//名称
	public String name;
	//价格
	public float price;
	//数量
	public int num;
	
	//修改价格
	public void setPrice(float p) {
		this.price=p;
	}
	//获得价格
	public float getPrice() {
		float j= this.price;
		return j;
	}
	//返回所有信息
	public String toString() {
		String str ="您点的是"+this.name+ 
				    " 价格:"+this.price+
				    " 数量:"+ this.num;
		return str;
	}
	public Noodles(){
		
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("商院面馆欢迎您!");
		Noodles n1 = new Noodles();//构造了一个面条的订单
		n1.name="炸酱面";//给变量赋值
        n1.price = 10;//给变量赋值
        n1.num = 3;//给变量赋值
        System.out.print("您点的是"+n1.name);//打印变量
        System.out.print(" 价格:"+n1.price);//打印变量
        System.out.println(" 数量"+ n1.num);//打印变量
		System.out.println(n1);
		
		//调用成员方法
		n1.setPrice(13);		
		float k=n1.getPrice();
		System.out.println("调价后"+k);
		System.out.println(n1.toString());
		
		
		
	}
}

User类练习

User类中定义一个方法来获取用户的邮箱,

User类中定义一个方法来修改用户的密码。

User类中定义一个方法来验证用户名、密码是否正确。