JAVASE基础(面向对象——封装性(局部变量和成员变量、构造方法))

成员变量和局部变量

1、在类中的位置不同

成员变量:在类中定义
局部变量:在方法中定义或者方法的参数

2、在内存中的位置不同

成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)

3、生命周期不同

成员变量:随着对象的创建而存在,随着对象的销毁而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

4、初始化值不同

成员变量:有默认初始化值,引用类型默认为null
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用
注意:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

eg:

package com.lhs.two;

public class Test3 {
    public static void main(String[] args) {
        Person2 p1 = new Person2();
        p1.setName("寒雪");
        p1.setAge(18);
        System.out.println(p1.getName());
        System.out.println(p1.getAge());

    }
}


class Person2{
    private String name;//成员变量,在类中定义
    private int age;//成员变量,在类中定义

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public void run(int len){//参数也是局部变量
        int i;
        int m = len;//m也是局部变量
        System.out.println("我跑了"+m+"米");
       // System.out.println(i);//此语句打印会报错,未初始化
    }
}

构造方法

什么是构造方法
1、构造方法就是类构造对象时调用的方法,用于对象的初始化工 作
2、构造方法是实例化一个类的对象时,也就是new 的时候,最先调用的方法。

构造方法的定义:
构造方法是在类中定义的,构造方法的定义格式:方法名称与类名称相同,无返回值类型的声明。

总结

(1)构造方法名称与类名相同,没有返回值声明(包括 void)
(2)构造方法用于初始化数据(属性)
(3)每一个类中都会有一个默认的无参的构造方法
(4)如果类中有显示的构造方法,那么默认构造方法将无效
(5)如果有显示的构造方法,还想保留默认构造 方法,需要显示的写出来。
(6)构造方法可以有多个,但参数不一样,称为构造方法的重载
(7)在构造方法中调用另一个构造方法,使用this(…),该句代码必须在第一句。
(8)构造方法之间的调用,必须要有出口。
(9)给对象初始化数据可以使用构造方法或setter方法,通常情况下,两者都会保留。
(10)一个好的编程习惯是要保留默认的构造方法。(为了方便一些框架代码使用反射来创建对象)
(11)private Dog(){},构造方法私有化,当我们的需求是为了 保正该类只有一个对象时。
什么时候一个类只需要一个对象?比如,工具类(没有属性的类,只有行为)并且该工具对象被频繁使用。
权衡只用一个对象与产生多个对象的内存使用,来确定该类是否要定义为只需要一个对象

package com.lhs.two;

public class Test4 {
    public static void main(String[] args) {
        //Dog dog = new Dog();
        Dog dog = new Dog("恶狗",23);

    }
}

class Dog{
    private String name;
    private int age;

    //无参构造方法默认的,如果类中有其他构造方法,那么默认方法则没有
    public Dog() {
        System.out.println("构造方法");
    }

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("带参构造方法");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩信001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值