Java基础知识 08(成员变量&局部变量,private关键字,this关键字,构造方法)

Java基础知识 08

成员变量&局部变量
局部变量与成员变量的区别:
局部变量:定义在方法中的变量或者方法声明上的变量。
成员变量:定义在类中方法外的变量。
区别:1.局部变量属于方法,成员变量属于对象。
	2.局部变量随着方法的调用而产生,随着方法的调用而消失。
	3.成员变量随着对象的创建而产生,随着对象的消失而消失。
	4.局部变量没有初始化值,必须赋值才能使用。成员变量有默认值。
	5.局部变量存在于栈内存,成员变量存在于堆内存。
变量访问的规则:当成员变量和局部变量同名后,在访问变量时,按照就近原则。
就近原则:现在局部范围内寻找,如果找到这个变量就使用,如果在局部范围内没有找到,就去成员范围内去找,如果找到就使用,没有找到就报错。
我们可以在一个Java文件中并列定义多个类,只能给这个主方法的类前面加上public,要不就全部都不加public。
但是我们建议一个类就是一个Java文件。
匿名对象:new student(); //没有设置名字的对象。
如果说我们这个方法,只想要调用一次的时候,我们就直接使用匿名对象调用。匿名对象可以作为参数传递。
如果你以后看到一个方法的形参,要一个类 类型,你就传递一个该类的对象。
private关键字
private关键字:私有的,是一个权限修饰符,可以修饰成员变量和成员方法,修饰之后,该成员只能在本类中访问,外界无法直接访问。
我们为了能够让用户能够在外界给我们的成员变量设置值,我们可以让它调用方法来给成员变量设值。
我们提供给成员变量设置值的公共的方法,让它把数据通过调用方法,传过来进行设置。
权限修饰符范围:public > protected > 确省的 > private,类中私有的成员外界无法访问。
案例程序分析1:
//定义类
public class Teacher {
    private String name;
    private int age;
    //设置方法
    public void setname(String xingming){
        name =xingming;
    }
    public void setage(int nianling){
        age =nianling;
    }
    //获取
    public String getname(){
        return name;
    }
    public int getage(){
        return age;
    }
}
------------------------------------------
public class Mytest {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        //设置值
        teacher.setname("老六");
        teacher.setage(50);
        //获取值
        /*teacher.getname();
        teacher.getage();*/
        String getname = teacher.getname();
        int getage = teacher.getage();
        System.out.println(getname);
        System.out.println(getage);
        System.out.println("-------------------------------");
        Teacher teacher1 = new Teacher();
        teacher1.setname("中国");
        teacher1.setage(9999);
        String getname1 = teacher1.getname();
        int getage1 = teacher1.getage();
        System.out.println(getname1);
        System.out.println(getage1);
    }
}
this关键字
案例程序分析2:
//定义类
public class Student {
    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 setName(String name){
        this.name=name;//this代表student对象
    }
    public void setAge(int age){
        this.age=age;
    }
    //获取方法
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
}
---------------------------------------
public class test {
    public static void main(String[] args) {
        Student student = new Student();
        student.setName("黄哥");
        student.setAge(23);
        String name = student.getName();
        int age = student.getAge();
        System.out.println(name);
        System.out.println(age);
        System.out.println("--------------------");
        Student student1 = new Student();
        student1.setName("杨哥");
        student1.setAge(23);
        String name1 = student1.getName();
        int age1 = student1.getAge();
        System.out.println(name1);
        System.out.println(age1);
    }
}
案例程序分析3:
public class test {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println("调用者"+student);
        student.setName(student,"赵四");
        student.setAge(student,45);

        String name = student.getName();
        int age = student.getAge();
        System.out.println(name);
        System.out.println(age);
        System.out.println("--------------------------");
        Student student1 = new Student();
        System.out.println("调用者"+student1);
        student1.setName(student1,"刘能");
        student1.setAge(student1,48);

        String name1 = student1.getName();
        int age1 = student1.getAge();
        System.out.println(name1);
        System.out.println(age1);
    }

}
class Student{
    private String name;
    private int age;
    //设置
    public void setName(Student student,String name){
        System.out.println("方法中的this"+this);
        this.name=name;
        System.out.println("传过来的student"+student);
        System.out.println(this==student);
    }
    public void setAge(Student student,int age){
        System.out.println("方法中的this"+this);
        this.age=age;
        System.out.println("传过来的student"+student);
        System.out.println(this==student);
    }
    //获取
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}
构造方法
this关键字:当成员变量和局部变量重名时,可以使用关键字this来区分。this它代表本类的一个作用,你可以认为是本类的一个作用,那么哪个对象调用这个方法,这个方法中的this就代表这个对象。
	谁调用这个方法,方法中的this就代表谁。
	
构造方法:创建对象时使用关键字new。我们在创建对象时,除了要使用关键字new之外,还必须借助构造方法,来完成对类的实例化。我们在自定义一个类的时候,这个类默认就存在一个空参的构造方法。构造方法就是方法名和类名相同,并且构造方法,没有返回值类型,也没有void。
自己定义的类中,默认就存在空参构造。
当我们手动写出了有参构造,默认无参构造就没有了,如果还想使用无参构造创建对象,建议你手动把无参构造写出来。
一个类的构成:构造方法,成员变量,成员方法。
案例程序分析4:
public class test {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println(student);
        System.out.println("--------------------------");
        Student student1 = new Student();
        System.out.println(student1);
        System.out.println("--------------------------");
        Student student2 = new Student("李易峰", 32);
        System.out.println(student2);
        System.out.println("--------------------------");
        Student student3 = new Student();
        student3.setName("尼古拉斯赵四");
        student3.setAge(48);
        System.out.println(student3.getName());
        System.out.println(student3.getAge());
        System.out.println("--------------------------");
        Student student4 = new Student("胡歌", 36);
        System.out.println(student4.getName());
        System.out.println(student4.getAge());
    }
}
class Student{
    private String name;
    private int age;
    public Student(){
        System.out.println("空参的构造方法调用了");
    }
    public Student(String name){
        System.out.println("一个参数的构造方法调用了"+name);
    }
    public Student(String name,int age){
        System.out.println("两个参数的构造方法调用了"+name+age);
        this.name=name;
        this.age=age;
    }
    public void setName(String name){
        this.name=name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
}
案例程序分析5:
public class Teacher {
    private String name;
    private int age;
    //空参构造手动写出
    public Teacher(){
        System.out.println("空参构造调用了");
    }
    public Teacher(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void setName(String name){
        this.name=name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
}
--------------------------------------------
public class test {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.setName("杨超越");
        teacher.setAge(21);
        System.out.println(teacher.getName());
        System.out.println(teacher.getAge());
        System.out.println("--------------------");
        Teacher teacher1 = new Teacher("刘亦菲",34);
        System.out.println(teacher1.getName());
        System.out.println(teacher1.getAge());
    }
}
案例程序分析6:
public class Phone {
    private String name;
    private double price;

    public Phone() {
    }
    //快速生成构造方法 alt+insert 选constructor
    public Phone(String name, double price) {
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public void call(){
        System.out.println("打电话");
    }
    public void sendweixin(){
        System.out.println("发微信");
    }
}
--------------------------------------------------
public class test {
    public static void main(String[] args) {
        Phone phone = new Phone();
        phone.setName("华为P30");
        phone.setPrice(3000);
        phone.call();
        phone.sendweixin();
        System.out.println(phone.getName());
        System.out.println(phone.getPrice());
        System.out.println("-----------------------");
        Phone phone1 = new Phone("小米",1500);
        phone1.call();
        phone1.sendweixin();
        System.out.println(phone1.getName());
        System.out.println(phone1.getPrice());
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值