Java类的成员方法
目录
成员方法的定义
方法定义的目的是让其他类进行调用使之发挥方法执行的功能。
方法的使用的一般前是必须先创建对象,然后使用“.”操作符实现对其方法的调用,方法中的局部变量被分配内存空间,方法执行完毕,局部变量即刻释放内存。使用方法的格式如下:
[数据类型 接收变量名=]对象名.方法名([实参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; }
【注意】
- 形参和实参的类型必须要一致,或者要符合隐含转换规则。
- 形参类型不是引用类型时,在调用该方法时,是按值传递的。在该方法运行时, 形参和实参是不同的变量,它们在内存中位于不同的位置,形参将实参的值复制一份,在该方法运行结束的时候形参被释放,而实参内容不会改变。
- 形参类型是引用类型时,在调用该方法时,是按引用传递的。运行时,传给方法的是实参的地址,在方法体内部使用的也是实参的地址,即使用的就是实参本身对应的内存空间。所以在函数体内部可以改变实参的值。
方法的返回值
方法调用的目的是要执行方法的功能,若方法执行完毕并有返回值,那么这个返回值是相当重要
方法可以有返回值,如下面这个方法的返回值类型为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类中定义一个方法来验证用户名、密码是否正确。