Java第二阶段---09类和对象---第二节 成员变量和成员方法

第二节 成员变量和成员方法

1.成员变量

解释说明
在类中定义的变量就是成员变量。成员变量顾名思义是属于成员(具体的对象、具体的事物)的,成员变量有初始值。
成员变量的初始值:
引用数据类型的初始值都是null,整数都是0,浮点数都是0.0,boolean类型是false,char类型是'\u0000'

访问成员变量的语法
对象名.属性名;
示例
public class PersonTest {

    public static void main(String[] args) {
        //这里p成为对象名,
        Person p = new Person();//构建了一个具体的人,只是这个人目前没有姓名,年性别和年龄
        System.out.println(p.name + "\t" + p.sex + "\t" + p.age);
        p.name = "刘德华";
        p.sex = "男";
        p.age = 53;

        System.out.println(p.name + "\t" + p.sex + "\t" + p.age);

        Person p1 = new Person();
        p1.name = "张学友";
        p1.sex = "男";
        p1.age = 52;

        System.out.println(p1.name + "\t" + p1.sex + "\t" + p1.age);

        Person p2 = new Person();
        p2.name = "黎明";
        p2.sex = "男";
        p2.age = 45;
        System.out.println(p2.name + "\t" + p2.sex + "\t" + p2.age);
    }
}

2.成员方法

解释说明
在类中定义的方法就是成员方法。成员方法顾名思义是属于成员(具体的对象、具体的事物)的。

调用成员方法的语法
//[]中内容可有可无
对象名.方法名([参数列表]);
示例
public class PersonTest {

    public static void main(String[] args) {
        //这里p成为对象名,
        Person p = new Person();//构建了一个具体的人,只是这个人目前没有姓名,年性别和年龄
        System.out.println(p.name + "\t" + p.sex + "\t" + p.age);
        p.name = "刘德华";
        p.sex = "男";
        p.age = 53;

        System.out.println(p.name + "\t" + p.sex + "\t" + p.age);
        p.eat();
        p.sleep();
        p.work();

        Person p1 = new Person();
        p1.name = "张学友";
        p1.sex = "男";
        p1.age = 52;

        System.out.println(p1.name + "\t" + p1.sex + "\t" + p1.age);
        p1.eat();
        p1.sleep();
        p1.work();

        Person p2 = new Person();
        p2.name = "黎明";
        p2.sex = "男";
        p2.age = 45;
        System.out.println(p2.name + "\t" + p2.sex + "\t" + p2.age);
        p2.eat();
        p2.sleep();
        p2.work();
    }
}
 

3.成员变量和局部变量

解释说明
局部变量就是在方法内部定义的变量。局部变量没有初始值,因此,局部变量在使用之前必须完成初始化操作。当局部变量与全局变量同
名时,局部变量优先级更高(因为局部变量的作用范围更小,就在局部变量所定义的方法内,因此局部变量在方法内的优先级要高于成员变量)。

示例
public class Car {
    //车特征
    public String name;//车名   可以直接拿来用 说明它有初始值

    public String address;//生产地

    public int rol;//转速

    //车行为
    public void run(){
        System.out.println("运行");
    }

    public void pY() {
        System.out.println("漂移");
    }
    public void show(){//展示
        String name1;//局部变量,没有初始值
        System.out.println(name1 + name +'\t'+ address +'\t'+ rol);//name1报错
    }
}
 

4.this关键字

思考:
在方法中,如果局部变量和成员变量同名,此时又想使用成员变量,怎么办呢?
此时需要使用this关键字来解决
this关键字表示的是当前对象(使用new创建出来的对象-->属性(特征)和方法(行为)都是属于对象的)。

示例
public class Car {
    //车特征(属性)
    public String name;//车名   可以直接拿来用 说明它有初始值

    public String address;//生产地

    public int rol;//转速

    //车行为(方法)
    public void run(){
        System.out.println("运行");
    }

    public void pY() {
        System.out.println("漂移");
    }
    public void show(){//展示
        String name="奔驰";
        System.out.println( this.name +'\t'+ address +'\t'+ rol);//相当于address省略了this (本来是this.address)
    }
}
public class CarTest {

    public static void main(String[] args) {
        Car c =new Car(); //this => c
        c.name = "奥迪";
        c.address = "中国";
        c.rol = 240;
        c.show();

        Car c1 =new Car(); //this => c1
        c1.name="大众";
        c1.address="中国";
        c1.rol=300;
        c1.show();
    }

}
this还可以用来调用成员的方法
/**
 * 人类
 */
public class Person {
    //特征
    public String name;//姓名

    public String sex;//性别

    public int age;//年龄

    //人行为
    public void eat(){
        System.out.println(age+"岁的"+sex +"性同志"+ name+"在吃饭");
        work();//相当于 this.work() 因为方法是属于对象的 要调用只能是对象来调(对象是谁 在PersonTest中是p 所以相当于PersonTest中p.work 所以相当于this.work();
    }
    public void sleep(){
        System.out.println(age+"岁的"+sex +"性同志"+ name+"在睡觉");
        work();//相当于 this.work() 因为方法是属于对象的 要调用只能是对象来调 所以相当于this.work();
    }
    public void work(){
        System.out.println(age+"岁的"+sex +"性同志"+ name+"在工作");
    }
}
 

Person源码

/**
 * 人类
 */
public class Person {
    //特征
    public String name;//姓名

    public String sex;//性别

    public int age;//年龄

    //人行为
    public void eat(){
        System.out.println(age+"岁的"+sex +"性同志"+ name+"在吃饭");
        work();//相当于 this.work() 因为方法是属于对象的 要调用只能是对象来调(对象是谁 在PersonTest中是p 所以相当于PersonTest中p.work 所以相当于this.work();
    }
    public void sleep(){
        System.out.println(age+"岁的"+sex +"性同志"+ name+"在睡觉");
        work();//相当于 this.work() 因为方法是属于对象的 要调用只能是对象来调 所以相当于this.work();
    }
    public void work(){
        System.out.println(age+"岁的"+sex +"性同志"+ name+"在工作");
    }
}

PersonTest源码

public class PersonTest {

    public static void main(String[] args) {
        //这里p成为对象名,
        Person p = new Person();//构建了一个具体的人,只是这个人目前没有姓名,年性别和年龄
        System.out.println(p.name + "\t" + p.sex + "\t" + p.age);
        p.name = "刘德华";
        p.sex = "男";
        p.age = 53;

        System.out.println(p.name + "\t" + p.sex + "\t" + p.age);
        p.eat();
        p.sleep();
        p.work();

        Person p1 = new Person();
        p1.name = "张学友";
        p1.sex = "男";
        p1.age = 52;

        System.out.println(p1.name + "\t" + p1.sex + "\t" + p1.age);
        p1.eat();
        p1.sleep();
        p1.work();

        Person p2 = new Person();
        p2.name = "黎明";
        p2.sex = "男";
        p2.age = 45;
        System.out.println(p2.name + "\t" + p2.sex + "\t" + p2.age);
        p2.eat();
        p2.sleep();
        p2.work();
    }
}

Car源码

public class Car {
    //车特征(属性)
    public String name;//车名   可以直接拿来用 说明它有初始值

    public String address;//生产地

    public int rol;//转速

    //车行为(方法)
    public void run(){
        System.out.println("运行");
    }

    public void pY() {
        System.out.println("漂移");
    }
    public void show(){//展示
        String name="奔驰";
        System.out.println( this.name +'\t'+ address +'\t'+ rol);//相当于address省略了this (本来是this.address)
    }
}

CarTest源码

public class CarTest {

    public static void main(String[] args) {
        Car c =new Car(); //this => c
        c.name = "奥迪";
        c.address = "中国";
        c.rol = 240;
        c.show();

        Car c1 =new Car(); //this => c1
        c1.name="大众";
        c1.address="中国";
        c1.rol=300;
        c1.show();
    }

}


 

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值