面向对象(2)

 成员变量和局部变量的区别
      1)书写位置不同
         局部变量:在方法定义中或者方法声明上
         成员变量:在类中方法外 (范围大)
     2)内置中的位置不同
        局部变量:在栈内存中
         成员变量:在堆内存中
     3)生命周期不同
        局部变量: 随着方法调用而存在,随着方法调用结束而消失
         成员变量:随着对象的创建而存在, (跟对象有关系:类名 对象名= new 类名();)随着对象的创建完毕等待垃圾回收器空闲的时候回收掉,而消失!
    4)初始化值不同
           局部变量:要么先定义,后面初始化;要么直接直接初始化    在使用之前必须初始化,否则报错 "可能尚未初始化变量"
           成员变量:存在系统默认初始化,可以不赋值,可以赋值,但是不一般不会直接赋值

都是通过对象名.成员变量名=赋值;

 形式参数如果是基本数据类型,形参的改变不会影响实际参数

 如果形式参数是引用数据类型,(数组,类,接口),他们作为形式参数,
 形式参数的改变会直接影响实际参数,他们都是空间地址值传递

 String作为引用数据类型,是一种特殊的引用类型,
 它作为形式参数的效果和基本类型是一致的,形参的改变不会影响实际参数
 (因为String是常量)
  String str  = "abc" ;

//定义一个学生类
class Student{
    //成员方法
    public void study(){
        System.out.println("Good Good Study ,Day Day Up!!!");
    }
}
//StudentDemo类
class StudentDemo{
    //成员方法
    public void method(Student student){//形式参数Student类型,引用类型
        student.study() ;//什么才能访问学生类的study方法呢?
                        //学生对象才能访问study方法呀!!
                        //实际参数需要创建Student类对象才能访问study()
                        //下面的实际参数就是s---代表学生对象
                        //s.study() ;
    }
}
//测试类
public class StudentTest {
    public static void main(String[] args) {
        //需求:调用StudentDemo类中的method方法?如何访问呢?
        //1)创建StudentDemo类对象
        StudentDemo studentDemo = new StudentDemo() ;
        //一看到,当前method方法中有一个Student类型,所以需要创建Student类的对象
        Student s = new Student() ;
        studentDemo.method(s);//实际参数,形式参数是Student类型
    }
}

匿名对象的格式:
          new 类名() ; 不需要在栈内存开辟空间,
                        直接堆内存申请空间
 匿名的好处:
       1)在实际开发中,匿名对象不要多次,
         使用一次即可,使用完毕之后,立即就被垃圾回收器回收了
   (因为没有栈内存变量指向堆内存地址)
       2)匿名对象可以作为参数传递
       3)匿名对象 从内存角度考虑,节省内存

关键字----叫"this",来区分成员变量和局部变量
     this:代表的是当前类对象的地址值引用!
     this.变量名---->变量名---->成员变量名 (对象.成员变量)


//使用私有化对程序封装

public class Phone {
    private String brand;
    private int price;
    private String color;
    private String memory;

    public String getBrand(){
        return brand;
    }
    public void setBrand(String brand){
        this.brand=brand;
    }
    public int getPrice(){
        return price;
    }
    public void setPrice(int price){
        this.price=price;
    }
    public String getColor(){
        return color;
    }
    public void setColor(String color){
        this.color=color;
    }
    public String getMemory(){
        return memory;
    }
    public void setMemory(String memory){
        this.memory=memory;
    }
    public void callPhone(String name){
        System.out.println("打电话给某人"+name);
    }
    public void sendMes(String name){
        System.out.println("发消息给"+name);
    }
    public void playGame(String gamename) {
        System.out.println("玩" + gamename + "游戏");

    }
}
//测试类
public class PhoneTest2 {
 public static void main(String[] args){
     Phone pho=new Phone();
     pho.setBrand("小米12");
     pho.setColor("白色");
     pho.setPrice(4399);
     pho.setMemory("128G");
     System.out.println("手机品牌是" + pho.getBrand() + "  颜色是" + pho.getColor() + "  价格是" + pho.getPrice() + "  内存是" + pho.getMemory());
     pho.callPhone("杨同事");
     pho.sendMes("王小二");
     pho.playGame("LOL");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值