作用域基本使用
在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 就是当前对象的属性namethis.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,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~