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
在类中添加专业对象作为属性,通过其属性获得相关信息
关联性更强