类和对象(初)-- this的使用和函数重载问题

package TestCode;
//在包下创建一个People类

/**
 * this 关键字使用:
 * this() 调用必须位于当前构造函数有效代码第一行(重点)
 * 1、如果局部变量和成员变量产生命名冲突,需要显示指明当前对象   this.name=name;
 * 2、函数重载中,(构造函数重载)
 *    1)构造函数之间不能使用this进行相互调用
 *    2)this()调用构造函数时,不能在普通函数(成员函数)中调用
 *    3)当前构造函数不能通过this调用多个构造函数
 */
public class People {
    //1、属性:成员变量或实例变量   (底下所有的函数共用一份成员变量)
    //默认this  指向当前对象
    private String name;
    int age;  //java中不允许使用未经初始化的局部变量
    String sex;

    //2、构造函数、方法——>专门初始化成员变量,给类型默认值
    //如果当前当前类里面没有提供构造函数,JVM默认生成无参构造函数,(所以name有初始化值)
    // (无参构造方法没有返回值,他的函数名与类名一样,赋类型默认值)
    // People(){
    //        name=null;
    //        age=0;
    //        sex=null;
    //    }

    //有参构造函数    (如果自己实现了构造函数,JVM不会在生成无参构造)

    People(String name,int age,String sex) {   //构造函数中参数与成员属性名在命名上发生冲突,
        this.name = name;  //就近原则,所以需要将局部变量的name赋值给成员变量
        this.age = age;//将局部变量的age赋值给属性age
        this.sex = sex;
        //this();不允许使用this()进行相互调用,因为会陷入死循环
    }
    //构造方法重载
    People(){
        //对于构造函数如何调用?
        this("zs",10,"nan");
    }

    //将私有方法可以被外界所访问
        public String getName(){
            return this.name;
        }

    //3、行为:成员方法或实例方法
    public void eat(){
        System.out.println(name+"吃饭");
        //函数调用
        eat("zs");
    }
    public void eat(String name){
        System.out.println("指定"+name+"在吃饭");
        //函数重载(函数名一样,参数列表不同)
    }
    public void sleep(){
        System.out.println("睡觉");
    }
}

package TestCode;

public class Test20_10_19 {
    public static void main(String[] args) {
        People p=new People();
        People people=new People("zs",10,"nan");
        String name=people.getName();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值