day08作业
1.A.在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B.在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
C.生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D.初始化值不同
成员变量:有默认初试化值
局部变量:没有默认初始化值,使用前必须定义,赋值,然后才能使用。
2.匿名对象就是没有名字的对象
应用场景:a.调用方法,仅仅只调用一次的时候。
b.匿名对象可以作为实际参数传递
3.封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式
人类赋值年龄的问题
用private关键字修饰成员变量
private是一个权限修饰符,可以修饰成员变量和成员方法,被其修饰的成员只能在本类中被访问。
举例:A.把成员变量用private修饰
B.提供对应的getXxx()和setXxx()方法
4.this关键字
(1)调用本类中的属性,也就是类中的成员变量
(2)调用本类中的其他方法
(3)调用本类中的其他构造方法,调用时要放在构造方法的首行
5.可以通过在被访问的类中定义访问权限为public的函数,用来返回数据成员的引用。
class Demo1_Student { public static void main(String[] args) { Student s = new Student(); s.name = "小明"; s.age = 22; s.speak(); } } class Student { String name; int age; public void speak(){ System.out.println(name + " " + age); } }
class Phone { public static void main(String[] args) { MobilePhone m = new MobilePhone();//创建对象 m.brand = "苹果"; //调用品牌属性并赋值 m.price = 8888; //调用价格属性并赋值 System.out.println(m.brand + " " + m.price); m.call(); m.sendMessage(); m.playGame(); } } class MobilePhone { String brand; int price; public void call(){ System.out.println("打电话"); } public void sendMessage(){ System.out.println("发信息"); } public void playGame(){ System.out.println("玩游戏"); } }
class Demo2_Car { public static void main(String[] args) { for (int i = 0;i < 10;i++ ) { method(new Car()); } } public static void method(Car cc){ cc.color = "red"; cc.num = 4; cc.run(); } } class Car { String color; int num; public void run(){ System.out.println(color + " " + num); } }