第八天
手机事物,通过面向对象的方式:定义手机类
品牌,价格,颜色,内存的属性
打电话,发短信,玩游戏,学习的行为.
class phone{
String brand;
int price;
String color;
public void call(){
System.out.println("打电话");
}
public void text(){
System.out.println("发短信");
}
public void play(String g){
System.out.println("玩"+g);
}
public void Study(String s){
System.out.println("学习"+s);
}
}
public class phoneTest{
public static void main(String[] args){
phone p1 = new phone();
p1.brand = "Apple";
p1.price = 5999;
p1.color = "Red";
p1.call();
p1.text();
p1.play("LOL");
p1.Study("java");
System.out.println(p1.brand+p1.price+p1.color);
}
}
创建一个对象的内存图解/两个对象内存
创建多个对象;将第一个对象名称赋值非第三个引用类型变量—内存图解(多个栈—指向同一个堆).
局部变量和成员变量的区别
局部变量定义与方法中,或者是方法的声明上的形参如
class Student{
public void Study(String s){
String t = "Student";
System.out.println(t+"Study "+ s);
//这个方法声明上的s方法中的t就是局部变量.
}
}
局部变量存放在栈内存中,随着方法的调用而存在,随着方法调用完毕而消失.在初始化局部变量时,可以先对其定义,但是在试用之前必须赋值,否则没有初始化变量的局部变量有可能会报错.
成员变量定义在类中的方法外,如
class Studnet{
String name;
int age;
String gender;
public void Study(){
System.out.println("Study");
}
//以上的 name age gender 都是成员变量,它们都定义在方法外
}
成员变量在堆中储存,随着对象整体的创建而存在,对象创建完毕后也不像类中的局部变量一样使用完就立刻消失,而是在GC(垃圾回收器,这玩意你可以去BDBD?)空闲以后自动回收掉.
成员变量可以不初始化,系统默认对它进行初始化,根据类型不同,初始化的也不同.
如果形式参数是引用类型,具体的类实际参数如何传递?
如果方法的形参类型是一个引用类型的类,呢么就需要创建当前引用类型类的对象才能传递进去参数.
class Programmer{
public void coding(){
System.out.println("程序员根据需求写代码...") ;
}
}
//定义Demo类
class Demo{
//有一个成员方法
public void show(Programmer programmer){
programmer.coding() ;
}
}
class Test{//测试类
public static void main(String[] args){
//创建Demo类对象
Demo d = new Demo() ;
//创建Programmer类的对象
Programmer pro = new Programmer() ;
d.show(pro) ;
}
}
什么是匿名对象,有什么特点
匿名对象就是新创建对象时候不给新创建对象名字,格式为:
new 类名();
匿名对象可以作为参数进行传递,一般在开发过程中仅需使用一次对象的时候使用,因为没有栈内存变量指向堆内存地址,直接是在堆内存中开辟空间,使用完毕后就立刻进行回收.一般搞Android的开发用的多,因为手机的内存小,这样做可以节省空间.
引入关键字 private
private关键字既可以修饰成员变量也可以修饰成员方法,但是都只能在本类中进行访问,外界不能直接访问private的属性或者方法,通过这种方式来完成封装,属性方法的私有化,这些私有化的属性方法,只能通过公共的方法来访问或者修改.