Java程序设计构造方法

在认识清楚Java的基础知识后,我们来进阶详解Java的构造方法。

首先java的构造方法是在创建对象时,通过new运算符调用来创建对象并进行初始化的特殊方法。

构造方法有以下几个特点:①构造方法名与其所在的类名相同;②构造方法无返回值类型,则返回void,否则不是构造方法,而是一般成员方法;③构造方法只通过new运算调用;④构造方法可以没有参数,也可以有多个参数;⑤构造方法可以重载;⑥构造方法不能被子类继承。

构造方法的调用:只能通过new运算符调用,其参数传递与形参实参结合也在调用时同时完成。其实用new原酸城建对象的一般格式如下:

<类名> <对象名> = new <类的构造方法>([参数列表]);

解析一下这语句就是,由new通知运行系统为所创造的对象在开辟一个单元,自动匹配并调用相应的构造方法,使用给定的[参数列表]为所创建的对象进行初始化,使新建对象的各个变量获取值。

这里解释一下形参和实参,形参是方法定义的参数;实参是方法调用的参数。

还有访问方法和修改方法,也是常用的。顾名思义,访问方法get()是能够返回成员变量值的方法,而修改方法set()是能够修改成员变量值的方法

最后在定义类时,若没有定义任何构造方法,则系统会自动为该类生成一个默认构造方法,用默认构造方法去创建对象使用是默认值,就是方法名和类名依旧相同,但是没有任何形参,不实现任何操作的构造方法。

看些例题

1、定义一个名为Cuboid的长方体类,使其继承Rectanele类,其中包含一个表示高的double型成员变量 height定义一个构造方法Cuboid(double length,double width,double height);再定义一个求长方体体积的volume()方法。编写程序,求一个长、宽和高分别为10、5、2的长方体的体积。

//实现类继承格式public class 子类名  extends 父类名
public class Cuboid extends Rectangle{//创建一个Cuboid类,继承Rectanele类
		private double height;//包含成员变量height
		public Cuboid(double length, double width,double height){//构造cuboid方法
			super();
			this.height =height;
		}
		public Cuboid(){//定义Cuboid无参,定义格式
			this(0,0,0) ;
		}
		public void setLength (double length){
		}
		public double getLength(double length){
			return length;
		}
		public void setHeight ( double height){
			this.height = height;//在构造方法中用this区别初始定义
		}
		public double getHeight(){
			return height;//返回构建变量
		}
		public double volume(double length,double width ,double height){
			//构造volume方法求长方形体积
			return length*width*height;
		}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Cuboid cb = new Cuboid();//创建对象Cuboid
		cb.setLength(10);//直接调用setLength,setWidth,setHeight,赋值
		cb.setWidth(5);
		cb.setHeight(2);
		System.out.println("长方体的体积= " + cb.volume(10,5,2));//输出调用volume方法
	}
}

这里我想解释一下关键字this,它就像一个等待使用接收方法调用的对象填充的空格一样,能让被引用的对象更清晰,区分使用的成员变量和局部变量,在方法定义中能够使用关键字this作为接收方法调用对象的名称。

2、写一个名为Rectangle的类表示矩形。其成员变量有width、height、color, width和height是double类型,color是String类型。假定所有矩形颜色相同,用一个类变量表示颜色。要求提供构造方法和计算矩形面积的computeArea()方法以及计算矩形周长的Circumference()方法。

public class Rectangle {//定义长方体类
	private double height;
	private double width;
	private String color;//设计私有属性
	public Rectangle() {
	}
	public Rectangle(double height,double width,String color) {
		this.color = color;
		this.height = height;
		this.width = width;
	}//定义Rectangle方法有变量width、height、color, width和height是double类型
	public double getHeight() {
		return height;
		}//访问方法
	public void setHeight(double height) {
		this.height = height;
		}//修改方法
	public double getWidth() {
		return width;
		}//定义getWidth,double型宽
	public void setWidth(double width) {
		this.width = width;
		}//定义setWidth,无返回值宽
	public String getColor() {
		return color;
		}//定义getColor,颜色
	public void setColor(String color) {
		this.color = color;
		}//定义setColor,修改方法
	public double computeArea() {
		return width*height;
		}//构造方法computeArea计算面积
	public double Circumference() {
		return 2*(width+height);
		}//构造方法Circumference计算周长
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Rectangle rect = new Rectangle(12.8,18.9,"blue");
		System.out.println("长方形的面积=" + rect.computeArea());
		//调用computeArea;自定义长宽和颜色打印周长面积
		System.out.println("长方形的周长=" + rect.Circumference());//打印需带长宽和面积
	}

}

3、编写User类,要求具有私有属性:用户名(account)和密码(password);具有行为:密码的setPassword()和getPassword()方法。编写一个.编写User类,要求具有私有属性:用户名(account)和密码(password);具有行为:密码的setPassword()和getPassword()方法。编写一个测试类,要求实例化一个User用户,并且使用构造方法对其进行初始化,输出用户密码信息。

public class User {//定义用户类
	private String account;
	private String password;//定义私有属性用户名(account)和密码(password);
	public String getAccount() {//访问方法
	return account;
	}
	public void setAccount(String account) {//修改方法
	this.account = account;
	}
	public String getPassword() {//定义带参getPassword()()访问方法
	return password;
	}
	public void setPassword(String password) {//定义带参setPassword()修改方法
	this.password = password;
	}
	public void  User(String account, String password) {
	this.account = account;
	this.password = password;
	}
	//登录方法
	public void login(String account,String password){
	if(account=="x"&&password=="123456"){
	System.out.println("登录成功");//定义测试方法如果,实参与login方法中的形参一致则登录成功
	}else {
	System.out.println("账号密码不对");
	}
	}
	public static void main(String[] args) {
	User user=new User();//创建实例user对象,初始化
	user.login("x","123456");//直接调用,给account,password赋值,与登录方法中的一致,登录成功
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值