Java--作用域,构造器,this

本文详细介绍了Java编程中变量的分类(全局变量和局部变量),强调了它们的赋值规则和作用域区别。此外,还探讨了构造器的概念、需求、语法以及this关键字的使用,包括构造器重载和this在对象创建中的应用。
摘要由CSDN通过智能技术生成

作用域基本使用

                在Java编程中,主要的变量就是属性(成员变量)和局部变量。

                我们说的局部变量一般是指在成员方法中定义的变量

                Java中作用域的分类

                        全局变量:也就是属性,作用域为整个类体

                        局部变量:也就是除了属性之外的其他变量,作用域为定义他的代码块中!

                全局变量可以不赋值,直接使用,因为有默认值,局部变量必须赋值后,才能使用,因为没有默认值。

注意事项和使用细节:

                属性和局部变量可以重名,访问时遵循就近原则。

                在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名。

                作用域不同:

                        全局变量:可以被本类使用,或其他类使用(通过对象调用)。

                        局部变量:只能在本类中对应的方法中使用。

                修饰符不同:

                        全局变量/属性可以加修饰符。

                        局部变量不可以加修饰符。

构造器(也是构造方法)

                构造器需求:

                        在创建一个人类对象时,是先把一个对象创建好之后,再给他的年龄和姓名属性赋值,使用构造器就是在创建人类对象时,就直接指定这个对象的年龄和姓名。

                 他是类的一种特殊方法,主要作用是完成对新对象的初始化,

                基本语法:

        [修饰符] 方法名(形参列表){

                        方法体;

}

说明:构造器的修饰符可以默认,也可以是public,protected,private。

           构造器没有返回值。

           方法名必须和类名一样。

           形参列表和方法一样的规则。

           构造器的调用,由系统完成。

public class Main {
	public static void main(String[] args) {
		Person p1 = new Person("LiHua", 18);
		System.out.println("姓名:" + p1.name);
		System.out.println("年龄:" + p1.age);
	}
}

class Person {
	//这里的name和age就是全局变量
	String name;
	int age;

	//构造器没有返回值,所以也不能写void
	//构造器的名称和类名一样
	public Person(String pname, int page) {
		name = pname;
		age = page;
	}
}

构造器的注意事项和使用细节

                一个类可以定义多个不同的构造器,即构造器重载。

    //下面的两个构造器就构成了构造器重载
	public Person(String pname, int page) {
		name = pname;
		age = page;
	}
	
	public Person(String pname) {
		name = pname;
	}

                构造器是完成对象的初始化,并不是创建对象。      

                如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器)

public class Main {
	public static void main(String[] args) {
		Dog d1 = new Dog();

	}
}

class Dog {

	/*
	 * 默认构造器 Dog() {
	 * 
	 * }
	 */

}

                一旦定义了自己的构造器,默认的构造器就覆盖了,就不能使用默认的无参构造器。

对象创建的流程分析

this的引出和入门

        

public class Main {
    public static void main(String[] args) {
        Dog d = new Dog("小狗", 18);
        d.out();
    }
}


class Dog {
    String name;
    int age;

    //如果构造器的形参,能够直接写成属性名就好了。但会出现一个问题,根据变量的作用域原则:
    //构造器的name,age是局部变量,而不是属性。

    /*public Dog(String dname, int dage) {
        name = dname;
        age = dage;
    }*/

    //this关键字就很好的解决了上述问题
    public Dog(String name,int age){
        this.name = name;       //this.name 就是当前对象的属性name
        this.age = age;         //this.age 就是当前对象的属性age
    }

    public void out() {
        System.out.println(name + "\t" + age);
    }
}

                                总结:简单的说,那个对象调用,this就代表那个对象。

this注意事项和使用细节:

                        1.this关键字可以用来访问本类的属性,方法,构造器。

                        2.this关键字用于区分当前类的属性和局部变量。

                        3.访问成员方法的语法:this.方法名(参数列表)。

public class Main {
    public static void main(String[] args) {
        Cat in = new Cat();
        in.test2();
    }
}

class Cat {
    String name;
    int age;

    public void test1() {
        System.out.println("一狗");
    }

    public void test2() {
        System.out.println("二狗");
        this.test1();
    }
}

                        4.访问构造器语法:this(参数列表);注意只能在构造器中使用(即只能在构造器中访问另一个构造器,必须放在第一条)

public class Main {
    public static void main(String[] args) {
        Cat in = new Cat();
        in.test2();
    }
}

class Cat {
    public void test1(String name, int age) {
        System.out.println("一狗");
    }

    public void test2() {
        this.test1("小狗", 18);           //这个语句必须放在第一条
        System.out.println("二狗");
    }
}

                        5.this不能在类定义的外部使用,只能在类定义的方法中使用。

 

public class Main {
    public static void main(String[] args) {
        B b = new B();
        b.test1();
    }
}

class B {
    String name = "小狗";
    int age = 18;

    public void test1() {
        System.out.println("name=" + this.name + "\n" + "age=" + this.age);
    }
}

Ending: 

        OK,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值