此前的内存关系中,对象的名字可以解释为在栈内存中保存,而对象的具体内容(属性)在堆内存中保存;而当没有栈内存指向堆内存空间时,就是一个匿名对象
例.定义匿名对象
class Book{
private String title;
private double price;
public Book(String t,double p){
title = t;
price = p;
}
public void getInfo(){
System.out.println("图书名称:" + title + "; 价格:" + price);
}
}
public class TestDemo{
public static void main(String args[]){
new Book("Java开发",69.8).getInfo(); //匿名对象
}
}
图书名称:Java开发; 价格:69.8
匿名对象只能使用一次,使用之后就将被GC回收
简单Java类:包含类,对象,构造方法,private封装等核心概念的使用
☆基本开发要求:
- 类名称必须存在意义,如Book、Emp;
- 类中所有的属性必须private封装,封装后的属性必须提供setter、getter;
- 类中可以提供多个任意构造方法,但是必须保留一个无参构造方法;
- 类中不允许出现任何输出语句,所有信息输出必须交给被调用处输出;
- 类中需要提供有一个取得完整对象完整信息的方法,暂定为getInfo(),而且返回String型数据
例.开发Emp程序类
class Emp{ //定义一个雇员类
private int empno; //雇员编号
private String ename; //雇员姓名
private String job; //雇员职位
private double sal; //基本工资
private double comn; //佣金
public Emp(){ //明确定义一个无参构造方法
}
public Emp(int eno, String ena, String j, double s, double c){
empno = eno; //为属性赋值
ename = ena;
job = j;
sal = s;
comn = c;
}
public void setEmpno(int e){
empno = e;
}
public void setEname(String e){
ename = e;
}
public void setJob(String j){
job = j;
}
public void setSal(double s){
sal = s;
}
public void setComn(double c){
comn = c;
}
public int getEmpno(){
return empno;
}
public String getEname(){
return ename;
}
public String getJob(){
return job;
}
public double getSal(){
return sal;
}public double getComn(){
return comn;
}
/**
* 取得简单Java类的基本信息,信息在被调用处输出
* @return 包含对象完整信息的字符串数据
*/
public String getInfo(){ //取得完整信息
return "雇员编号:" + empno + "\n" +
"雇员姓名:" + ename + "\n" +
"雇员职位:" + job + "\n" +
"基本工资:" + sal + "\n" +
"佣 金:" + comn;
}
}
本例中使用简单Java类的基本原则,明确定义了Emp类,对属性进行明确的封装,同时提供两个构造方法(一个无参,一个有参),而getInfo()取得信息的操作时将内容返回给调用处
例.编写一个测试上述Emp类的程序
public class TestDemo{
public static void main(String args[]){
Emp e = new Emp(7396,"SMITH","CLERK",800.0,1.0);
System.out.println(e.getInfo());
}
}
雇员编号:7396
雇员姓名:SMITH
雇员职位:CLERK
基本工资:800.0
佣 金:1.0