面向对象(2):成员变量和局部变量的区别

面向对象(2):成员变量和局部变量的区别

1、一个手机对象

	手机:
            属性:品牌,颜色,价格
            行为:打电话,发短信,学习

        Phone:
            成员变量:brand,color,price
            成员方法:call,sendMessage,study
			
    //定义一个手机类
public class Phone {
    //定义成员变量
    String brand;
    String color;
    int price;
    //定义成员方法
    public static void call(String s){
        System.out.println("给"+s+"打电话");
    }
    public static void sendMessage(String m){
        System.out.println("给"+m+"发短信");
    }
    public static void study(){
        System.out.println();
    }
}
//测试手机类(定义一个测试类,类名不要和手机类名一样)
class Phone02{
    public static void main(String[] args) {  //测试类需要main方法
	//创建一个手机对象(想要调取手机类中的东西,必须要创建手机对象)
	//创建手机对象的类名要和手机类的名字一样:Phone
	//然后给手机对象起个名字叫pp
        Phone pp = new Phone();   
        //给成员变量赋值
        pp.brand ="苹果";
        pp.color ="土豪金";
        pp.price =6999;
        System.out.println(pp.brand);
        System.out.println(pp.color);
        System.out.println(pp.price);
        //调用成员方法
        pp.call("伟爷");
        pp.sendMessage("伟爷");
        pp.study();

    }
}

执行结果为:
        苹果
        土豪金
        6999
        给伟爷打电话
        给伟爷发短信
        Process finished with exit code 0

2、一个测试类中,两个手机对象,可以同时调用一个方法


    创建两个手机对象,证明出了两个手机对象,可以同时调用一个方法

        手机:
            属性:品牌,颜色,价格
            行为:打电话,发短信,学习

        Phone:
            成员变量:brand,color,price
            成员方法:call,sendMessage,study
			
    //定义一个手机类
public class Phone {
    //定义成员变量
    String brand;
    String color;
    int price;
    //定义成员方法
    public static void call(String s){
        System.out.println("给"+s+"打电话");
    }
    public static void sendMessage(String m){
        System.out.println("给"+m+"发短信");
    }
    public static void study(){
        System.out.println();
    }
}
//测试手机类
class Phone02{
    public static void main(String[] args) {
	//创建第一个手机对象
        Phone pp = new Phone();   
        //给成员变量赋值
        pp.brand ="苹果";
        pp.color ="土豪金";
        pp.price =6999;
	//赋值后输出一下
        System.out.println(pp.brand);
        System.out.println(pp.color);
        System.out.println(pp.price);
        //调用成员方法
	//因为定义成员方法的时候,括号里加了String s
	//所以调用方法的时候,括号里要加字符串
        pp.call("伟爷");
        pp.sendMessage("伟爷");
        pp.study();


        //创建第二个手机对象
        Phone pp1 = new Phone();
        //给第二个成员变量赋值
        pp1.brand = "华为";
        pp1.color ="黑色";
        pp1.price = 4999;
        System.out.println(pp1.brand);
        System.out.println(pp1.color);
        System.out.println(pp1.price);
        //调用成员方法
        pp1.call("老李");
        pp1.sendMessage("老王");
        pp1.study();

    }
}

            执行结果为:
                    苹果
                    土豪金
                    6999
                    给伟爷打电话
                    给伟爷发短信

                    华为
                    黑色
                    4999
                    给老李打电话
                    给老王发短信


                    Process finished with exit code 0

3、成员变量与局部变量的区别

1、在类中的位置不同:
		成员变量:定义在类中方法外
                局部变量:定义方法内或者方法声明上
====例:成员变量==============================================                
  	class VariableDemo {
    	int a;//直接在类中定义的叫成员变量
====例:局部变量==============================================
 public static void main(String[] args) { 
        int a = 20;//在方法里面定义的叫局部变量
        System.out.println(a);
    }
2、在内存中的位置不同:
		成员变量:堆内存:
			随着对象在堆内存中的创建而出现,成员变量也在堆内存中出现
		局部变量:栈内存:
			由于方法执行是在栈中执行,所以在方法中定义的局部变量也存在栈里
3、生命周期不同:
	   成员变量:随着对象的创建而存在,随着对象的消失而消失
	   局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
4、初始化值不同:
	   成员变量:有默认的初始化值(系统值)
	   局部变量:没有默认的初始化值,必须先定义,赋值,才能使用(没有系统值)
成员变量的名称可以和局部变量的名称一样
方法与方法之间的局部变量不可以相互访问,因为作用域的范围不同
posted @ 2021-12-04 19:26  阿伟宝座  阅读(71)  评论(0)    收藏  举报