//定义一个Angel_001类,并添加属性和功能
public class Angel_001 {
public String sex;
public String color;
public int age;
public void angle(){
System.out.println("一个"+age+"岁的"+color+"的"+sex+"天使在天上飞");
}
}
//测试上面的类,调用
public class Angel_001_Test {
public static void main(String[] args) {
Angel_001 angel1=new Angel_001();
angel1.sex="女";
angel1.color="白色";
angel1.age=100000;
angel1.angle();
}
}
1、首先对Angel_001.java文件和Angel 001_Test文件进行编译生成.class文件传入内存;
2、JVM调用main0方法,在栈中开辟栈帧,并且压栈执行
3、执行new Angel 0010创建对象
4、执行new创建对象:
1.在堆内存中为对象开辟空间,同时类中的成员变量就会跟随对象进入到对象的堆内存并附默认值
2.调用构造器为对象进行信息初始化
3.将对象的地址返回给引用angel1.sex="女"为angel1引用指向的堆内存对象它内存空间中的属性
4、执行为对象的属性赋值的代码sex赋值为女
5、执行通过对象调用方法angel1.angle 0;angel方法压栈执行
6、执行angel方法,在成员方法中使用的成员变量默认指调用成员方法的对象成员
7、angle方法执行完成之后就会立刻弹栈释放内存,然后回到main方法中,继续向下执行new Angel 0010代码 8、main方法执行结束,立刻弹栈释放内存空间
示例一
模拟旅行前准备流程(查攻略,买机票,定酒店...) 分析 : 涉及到了几种事物? 秘书 国家 秘书类 Secretary 属性 : 姓名 性别 ... 功能 : 查攻略,买机票,定酒店
注意 : java是值传递 : 基本数据类型 : 数据值 引用数据类型 : 对象的地址值 方法的形参类型可以为任意数据类型,包含自定义的引用数据类型
public class Class005_Travel {
public static void main(String[] args) {
Secretary secretary = new Secretary();
secretary.name = "九七";
secretary.gender = false;
Country country = new Country(); //Country country = 0x001;
country.name = "迪拜";
country.hotelName = "帆船酒店";
secretary.bookTickets(country.name);
//secretary.bookHotel(country.name,country.hotelName);
secretary.bookHotel(country);//0x001
}
}
//国家类
class Country{
//属性
public String name;
public String location;
public String hotelName;
}
//秘书类
class Secretary{
//属性 : 姓名 性别
public String name;
public boolean gender; //false->男 true->女
//功能 : 查攻略,买机票,定酒店
public void bookTickets(String countryName){
System.out.println(name+"正在为您购买去"+countryName+"的机票...");
}
/*public void bookHotel(String countryName,String hotelName){
System.out.println(name+"正在为您预定"+countryName+"的"+hotelName+".....");
}*/
public void bookHotel(Country country){ //Country country = 0x001;
System.out.println(name+"正在为您预定"+country.name+"的"+country.hotelName+".....");
}
}
示例二
模拟蛋糕师制作蛋糕 分析涉及到了几种事物 : 蛋糕师 蛋糕
定义实体类 蛋糕类 : 属性 : 尺寸 形状 口味 价格... 功能 : 展示 蛋糕师类 : 姓名 评级 制作蛋糕
注意 : 方法的返回值类型可以为任意数据类型,包含自定义的引用数据类型
public class Class007_CakeTest {
public static void main(String[] args) {
Caker caker = new Caker();
caker.name = "九七";
caker.level = 5;
Cake cake = caker.makeCake(8,"圆形","草莓味",300);
cake.show();
}
}
//蛋糕类
class Cake{
public int size;
public String shape;
public String taste;
public double price;
//展示
public void show(){
System.out.println(size+"-->"+shape+"--->"+taste+"-->"+price);
}
}
//蛋糕师
class Caker{
public String name;
public int level; //1~5
//制作蛋糕
public Cake makeCake(int cakeSize,String cakeShape,String cakeTaste,double cakePrice){
//创建蛋糕对象
Cake cake = new Cake();
//为蛋糕对象的属性赋值
cake.size = cakeSize;
cake.price = cakePrice;
cake.taste = cakeTaste;
cake.shape = cakeShape;
//返回蛋糕
return cake;
}
}