java学习笔记05:static关键字,封装综合案例

static关键字

特点:1.类对象共享 2.类加载时产生,销毁时释放,生命周期长

在Cat的class里插入

	//static:静态成员,类成员,对于价格而言,共用同一块存储空间
	public static int price;

在Test的Class里插入

package com.imooc.test;
//import com.imooc.animal.*; //1.星号表示加载这个包底下的所有类
import com.imooc.animal.Cat;//2.加载指定包下指定的类,这种效率更高
//import com.imooc.mechanics.*;
//import com.imooc.*;

public class Test {
	public static void main(String[] args) {
		Cat one = new Cat();
		one.setName("花花");
		one.setSpecies("英国短毛猫");
		one.price = 2000;
		
		Cat two = new Cat();
		two.setName("凡凡");
		two.setMonth(1);
		two.setSpecies("中华田园猫");
		two.price=150;
		
		System.out.println(one.getName()+"的售价"+one.price);
		System.out.println(two.getName()+"的售价"+two.price);
	}
}

我是一只名叫花花的宠物猫的售价150
我是一只名叫凡凡的宠物猫的售价150

price里后来的赋值会取代掉前一个赋值

静态成员访问方式:1.对象名访问,2.类名访问

		one.price = 2000;
		Cat.price = 3000;

代码执行顺序===
静态代码块 构造代码块 和 普通代码块

编写测试subject类

package com.imooc.model;

public class Subject {
	//成员属性:学科名称,学科编号,学制年限
	private String subjectName;
	private String subjectNo;
	private int subjectLife;
	
	//无参构造方法	
	public Subject() {

	}
	//带参构造,实现对属性的全部赋值
	public Subject(String subjectName,String subjectNo, int subjectLife) {
	//	this.subjectName=subjectName;
		this.setSubjectName(subjectName);
		this.setSubjectNo(subjectNo);
		this.setSubjectLife(subjectLife);
	}
	
	public void setSubjectName(String subjectName) {
		this.subjectName = subjectName;
	}
	public String getSubjectName() {
		return this.subjectName;
	}
	public String getSubjectNo() {
		return subjectNo;
	}
	public void setSubjectNo(String subjectNo) {
		this.subjectNo = subjectNo;
	}
	public int getSubjectLife() {
		return subjectLife;
	}
	//设置学制年限,限制必须>0
	public void setSubjectLife(int subjectLife) {
		if(subjectLife <= 0)
			return;
		this.subjectLife = subjectLife;
	}
	/**
	 * 专业介绍的方法
	 * @return 专业介绍的相关信息,包括名称 编号 年限
	 */
	
	public String info() {
		String str = "专业信息如下:\n专业名称:"+this.getSubjectName()+"\n专业编号:"+this.getSubjectNo()+"\n学制年限:"+this.getSubjectLife();
		return str;
	}

}

package com.imooc.test;
import com.imooc.model.*;

public class SchoolTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 测试Subject
		Subject sub1 = new Subject("计算机科学与应用","J0001",-1);
		System.out.println(sub1.info());
	}
}

输出结果

专业信息如下:
专业名称:计算机科学与应用
专业编号:J0001
学制年限:0

通过方法实现学生与专业的关联的方案分析

方案1
在方法中添加两个参数,分别表示专业名称和学制年限
容易理解
参数列表长

方案2
在方法中添加一个专业对象作为参数,通过其属性获得相关信息
更加简单
获取参数方便

方案3
在类中添加专业对象作为属性,通过其属性获得相关信息
关联性更强

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值