java中的this的用法
java中this()的用法
java中this()的用法this()是Java中的特殊语法,用于在一个类的构造函数中调用另一个构造函数。
在一个类中可以定义多个构造函数,每个构造函数可以接受不同数量或不同类型的参数。
如果我们希望在构造函数中使用另一个构造函数中的代码,则可以使用this()来调用。
举个例子:```public class Person {private String name;private int age;public Person() {this("unknown", 0);}public Person(String name) {this(name, 0);}public Person(int age) {this("unknown", age);}public Person(String name, int age) { = name;this.age = age;}}```这里我们定义了一个Person类,有4个构造函数,分别接受0个、1个或2个参数。
我们希望在任何情况下,最终都能调用一个拥有两个参数的构造函数来完成对象初始化。
这时就可以使用this(),比如在Person()构造函数中调用this("unknown", 0)来完成对象初始化。
这意味着,如果使用不带参数的构造函数创建Person对象时,实际上会在该构造函数中调用this("unknown", 0),从而调用两个参数的构造函数来完成对象初始化。
使用this()注意要点:1. this()必须在构造函数的第一行调用,因为初始化必须先完成。
2. 只能在构造函数中使用this(),其他方法不能使用。
3. this()只能调用同一个类的其他构造函数,不能调用父类或子类的构造函数。
java构造函数的八种方法
java构造函数的八种方法在Java中,构造函数是用来初始化对象的特殊方法。
Java中构造函数的定义与普通方法类似,但具有以下特点:构造函数的方法名与类名相同;构造函数没有返回值类型;每个类都可以有一个或多个构造函数。
根据参数列表和调用方式的不同,构造函数可以分为以下八种方法:1.无参构造函数:这是最简单的构造函数,不接受任何参数。
当我们创建一个对象时,如果没有显式地调用构造函数,并且类中没有定义其他构造函数,则会隐式地调用无参构造函数。
javapublic class MyClass {public MyClass(){// 构造函数体}}2.有参构造函数:有参构造函数接受一个或多个参数,并根据这些参数对对象进行初始化。
javapublic class MyClass {public MyClass(int param1,String param2){// 构造函数体}}3.默认构造函数:如果没有在类中显式地定义构造函数,编译器会默认提供一个无参的构造函数。
这个构造函数称为默认构造函数。
javapublic class MyClass {// 编译器提供的默认构造函数public MyClass(){// 构造函数体}}4.重载构造函数:在一个类中可以定义多个构造函数,只要它们的参数列表不同即可,这就是构造函数的重载。
javapublic class MyClass {public MyClass(){// 无参构造函数}public MyClass(int param1){// 有参构造函数}}5.私有构造函数:私有构造函数可以防止类被实例化,通常用于创建工具类或单例模式。
javapublic class MyClass {private MyClass(){// 私有构造函数}}6.链式调用构造函数:在构造函数中返回this引用,使构造函数可以链式调用。
javapublic class MyClass {public MyClass param1(int param){// 设置param1return this;}public MyClass param2(String param){// 设置param2return this;}}7.静态工厂方法:使用静态方法来创建对象,而不是使用构造函数。
Java语言中this的应用方法研究
p bi t i od m i (tn rs ] u l s t vi an Sr gag [ ) c ac i {e hsE a l2 ) } n w T i xmpe ( ; } _
c a s T i Ex mpe l l s h s a l2
_ _
量, 既全 局 变量 或实 例变 量将 被 隐藏 起来 , 要想 实现 对实 例 变 量 的引用必 须加 ti 作 为前 缀 。 hs
类 中的一个 实 例变 量或 者 另外 一个 方法 没 有使 用任何 当前对 象 . 可 以认 为 ti 为 当前对象 。 : 则 hs 如 当要 把对 象 自身作 为参 数 传递 给别 的对象 时 , 用关 键字 ti。见 例 2 要 hs : 例 2 hs 为方法 的参 数传递 ti作
在 此 例 中 , 构 造 方 法 T i E a ll形 参 变 量 S与 hs xmpe —
Th s E a p 1类 的成 员变 量 i xm l e
_
{ hsE a pe ; T i x m l2a _
( 的 成 员 变 量 ) 同名 ,则 局 部 变 量 将 屏 蔽 全 局 变 量 或 实 例 变 类
{S s m. t r t ” l Jv cme rm T i E a yt o . i l He oa a o f hs xm— e u p n n( l o _ pe ) l2 1” ;}
{e hsE a pe (He oJv !” ;} } n wT i x m ll ” l a a ) _ l
{u l hsE a l ( p bi T i xmpe ) c _ 2 { e hsE a pe_ ( i) r t ) } nw T i x m l2 lt s.i ( ; _ h pn
java中this的用法
java中this的用法This,英语单词,发音:[英][ðɪs][美][ðɪs]。
常翻译为:这,这么。
java中this的用法有哪些呢?本文是店铺整理java中this的用法的资料,仅供参考。
java中this的用法11. this指当前对象。
当在一个类中要明确指出使用对象变量或函数时加上this引用。
如下面例子中:public class Hello {String s = "Hello";public Hello(String s){System.out.println("s = " + s);System.out.println("1 -> this.s = " + this.s);this.s = s;System.out.println("2 -> this.s = " + this.s);}public static void main(String[] args) {Hello x=new Hello("HelloWorld!");}}运行结果:s = HelloWorld!1 -> this.s = Hello2 -> this.s = HelloWorld!在这个例子中,构造函数Hello中,参数s与类Hello的变量s同名,这时直接对s进行操作则是对参数s进行操作。
对类Hello的成员变量s进行操作就应该用this进行引用。
运行结果的第一行就是直接对构造函数中传递过来的参数s进行打印结果;第二行是对成员变量s的打印;第三行是先对成员变量s赋传过来的参数s值后再打印,所以结果是HelloWorld!2. this作为参数传递当你要把自己作为参数传递给别的对象时如:public class A {public A() {new B(this).print();}public void print() {System.out.println("Hello from A!");}}public class B {A a;public B(A a) {this.a = a;}public void print() {a.print();System.out.println("Hello from B!");}}运行结果:Hello from A!Hello from B!在这个例子中,对象A的构造函数中,newB(this)把对象A作为参数传递给了对象B的构造函数。
java this关键字
me.getname("kate");
}
}
执行上述代码,结果如图6-17所示。
图6-17 this的用法
在该文件中,this表示当前对象。 =name语句表示一个赋值语句,是指当前对象具有的变量name,“name”表示的参数传递过来的数值。
}
public static void main(String[] args)
{
Obj_this me=new Obj_this("luci",20);
System.out.println("输出对象的属性");
System.out.println();
System.out.println(me.age);
public Obj_this(String name,int age) //构造方法
{
=name;
this.age=age;
}
public void getname(String name)
{
=name;
System.out.println(thiΒιβλιοθήκη );
java this
this关键字是Java中常用的关键字,可用于任何实例方法内,指向当前对象。也可指向对其调用当前方法的对象或在需要当前类型的对象引用时使用。
下面通过创建一个实例,来说明this关键字的用法。示例代码如下所示。
public class Obj_this
{
String name;
int age;
java中this用法总结
java中this⽤法总结1,当局部变量和成员变量重名的时候,在⽅法中使⽤this表⽰成员变量以⽰区分。
class Demo{String str = "这是成员变量";void fun(String str){System.out.println(str);System.out.println(this.str);this.str = str;System.out.println(this.str);}}public class This{public static void main(String args[]){Demo demo = new Demo();demo.fun("这是局部变量");}}分析:上⾯的类Demo中有⼀个成员变量str和⼀个局部变量str(类⽅法中的形式参数),很显然局部变量和成员变量重名,这个时候⼀般在⽅法中直接使⽤str实际上是使⽤局部变量str,对成员变量str没有任何影响,此时如果需要对成员变量做点什么,就必须使⽤this关键字。
有个问题,如果⽅法中没有str,那么在⽅法中使⽤成员变量str会是什么情况呢?实际上是⽅法内的所有操作都是针对成员变量str的。
java编程思想的84页中部有这样⼀句话:如果在⽅法内部调⽤同⼀个类的另⼀个⽅法,就不必使⽤this。
同样,在⼀个⽅法中如果没有局部变量和成员变量同名,那么在这个⽅法中使⽤成员变量也不必使⽤this,可以运⾏下⾯的代码看看。
class Demo{String str = "这是成员变量";void fun(String str1){System.out.println(str1);System.out.println(str);}}public class This{public static void main(String args[]){Demo demo = new Demo();demo.fun("这是局部变量");}}2,this关键字把当前对象传递给其他⽅法这⾥有个很经典的例⼦,就是java编程思想的85页的例⼦。
Java中的两个关键字——super、this
Java中的两个关键字——super、thisJava中的两个关键字——super、this ⼀、supersuper 是java中⽅的⼀个关键字,⽤它可以引⽤⽗类中的成员:super可⽤于访问⽗类中定义的属性super可⽤于调⽤⽗类中定义的成员⽅法super可⽤于在⼦类构造器中调⽤⽗类的构造器使⽤super关键字注意事项:1、当⼦类和⽗类都有同名的属性时,在⼦类中如果要使⽤⽗类的属性 super . 属性2、 super只能应⽤在成员⽅法和构造⽅法中,不能⽤在静态⽅法中(和this是⼀样的)3、如果在构造⽅法中使⽤必须放在第⼀⾏4、在构造⽅法中this()和super()不能同时出现super没有什么需要解释的地⽅,我们⽤代码来看看super具体的⼀些强⼤功能吧⽰例⼀、使⽤super调⽤基类的属性:public class Father { int num=20;}public class Child extends Father{ int num; public void print(){ num=10; super.num=30; System.out.println("num="+num); System.out.println("="+super.num); }}public class Test { public static void main(String[] args) { Child xm=new Child(); xm.print(); }}运⾏结果:⽰例⼆、使⽤super调⽤基类中的构造⽅法:public class Father { int num; public Father() { System.out.println("⽗类中的⽆参构造⽅法---"); } public Father(int num){ System.out.println("⽗类中的有参的构造⽅法----"+num); }}public class Child extends Father{ int num; public Child() { super(30); System.out.println("⼦类⽆参构造⽅法---"); } public Child(int num) { this.num = num; System.out.println("⼦类中的有参的构造⽅法---"+num); }}解释⼀下上⾯的这段代码:在Child类中的第⼀个构造函数⾥⾯,super(30);它会去调⽤⽗类中嗲有⼀个int型参数的构造⽅法。
this的用法归纳总结
this的用法归纳总结一、this关键字的基本概念与用法在许多编程语言中都有一个关键字叫做this,它代表当前对象或者当前执行上下文。
在JavaScript中,this是一个非常重要的概念,在不同的情况下具有不同的含义和作用。
本文将对this的用法进行归纳总结,帮助读者更好地理解和使用this关键字。
1.1 this的含义和作用简单来说,this关键字用于指向当前正在执行代码的对象。
它可以在方法内部引用对象自身,并提供了一种灵活的方式来访问对象属性和调用方法。
通过使用this,我们可以避免使用硬编码来引用对象,从而使得代码更加通用和可重复使用。
1.2 this的指向问题在JavaScript中,this的指向是动态确定的,取决于函数被调用时所处的上下文。
以下列举几种常见情况:1.2.1 方法调用时:当一个函数作为某个对象的方法调用时,this指向该对象。
1.2.2 函数调用时:当一个独立函数被直接调用时(不作为对象的方法),this指向全局对象(浏览器环境下是window)。
1.2.3 构造函数创建实例时:当通过new关键字调用构造函数创建一个新的实例时,this指向新创建的对象。
1.2.4 apply和call方法调用时:当使用apply或call方法来调用函数时,通过传递上下文参数,可以手动控制this的指向。
1.3 this的常见使用场景1.3.1 在对象内部访问属性和方法:通过使用this关键字,可以直接在对象内部访问自身的属性和方法。
例如:```javascriptconst person = {name: 'Alice',sayHello() {console.log(`Hello, ${}!`);}};person.sayHello(); // 输出 "Hello, Alice!"```1.3.2 DOM事件处理函数中:当给DOM元素添加事件处理函数时,该函数中的this指向触发事件的DOM元素。
This和Super的区别
This和Super的区别
⼀:this
java中this关键字的作⽤和词义很接近:
它在⽅法内部使⽤,即这个⽅法所属对象的引⽤
它在构造器内部使⽤,表⽰该构造器正在初始化的对象。
this表⽰当前对象,可以调⽤类的属性、⽅法和构造器。
注意
使⽤this()必须放在构造器的⾸⾏!
使⽤this()调⽤本类中其他的构造器,保证⾄少有⼀个构造器不是⽤this的。
⼆:super
java类中使⽤super来调⽤⽗类中的指定操作:
super可⽤于访问⽗类中定义的属性
super可⽤于调⽤⽗类中定义的成员⽅法
super可⽤于在⼦类构造⽅法中调⽤⽗类的构造器
注意
尤其当⼦⽗类出现同名成员是,可以⽤super进⾏区分。
super的追溯不仅限于直接⽗类。
super和this的⽤法相像,this代表本类对象的引⽤,super代表⽗类的内存空间的标识。
三:this和super区别
No.区别点this super
1访问属性访问本类中的属性,如果本类没有此属性则从⽗类中继续查找访问⽗类中的属性
2调⽤⽅法访问本类中的⽅法直接访问⽗类中的⽅法
3调⽤构造器调⽤本类构造器,必须放在构造器⾸⾏调⽤⽗类构造器,必须放在⼦类构造器的⾸⾏4特殊表⽰当前对象⽆。
java中的this和super的作用和异同和C++中调用父类的构造函数
java中的this和super的作⽤和异同和C++中调⽤⽗类的构造函数这⼏天看到类在继承时会⽤到this和super,这⾥就做了⼀点总结,与各位共同交流,有错误请各位指正~thisthis是⾃⾝的⼀个对象,代表对象本⾝,可以理解为:指向对象本⾝的⼀个指针。
this的⽤法在java中⼤体可以分为3种:1.普通的直接引⽤这种就不⽤讲了,this相当于是指向当前对象本⾝。
2.形参与成员名字重名,⽤this来区分:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17class Person {private int age = 10;public Person(){System.out.println("初始化年龄:"+age);}public int GetAge(int age){this.age = age;return this.age;}}public class test1 {public static void main(String[] args) {Person Harry = new Person();System.out.println("Harry's age is "+Harry.GetAge(12)); }}运⾏结果:初始化年龄:10Harry's age is 12可以看到,这⾥age是GetAge成员⽅法的形参,this.age是Person类的成员变量。
3.引⽤构造函数这个和super放在⼀起讲,见下⾯。
supersuper可以理解为是指向⾃⼰超(⽗)类对象的⼀个指针,⽽这个超类指的是离⾃⼰最近的⼀个⽗类。
super也有三种⽤法:1.普通的直接引⽤与this类似,super相当于是指向当前对象的⽗类,这样就可以⽤super.xxx来引⽤⽗类的成员。
2.⼦类中的成员变量或⽅法与⽗类中的成员变量或⽅法同名12 3 4 5 6 7 8 9 10 11 12 13class Country {String name;void value() {name = "China";}}class City extends Country {String name;void value() {name = "Shanghai";super.value(); //调⽤⽗类的⽅法 System.out.println(name);13 14 15 16 17 18 19 20 21 System.out.println(name);System.out.println();}public static void main(String[] args) { City c=new City();c.value();}}运⾏结果:ShanghaiChina可以看到,这⾥既调⽤了⽗类的⽅法,也调⽤了⽗类的变量。
java中 this 的用法
java中this 的用法this 是一个关键字,主要用于指代当前对象。
在JAVA中,this关键字的使用有以下几种情况:1. 在构造方法中,this用于调用同一个类的其他构造方法。
这种情况下,this 后面需要加上参数列表,用于调用其他构造方法。
例如:public class MyClass {private String name;private int age;public MyClass(String name) { = name;}public MyClass(String name, int age) {this(name); 调用带有一个参数的构造方法this.age = age;}}2. 当成员变量和局部变量重名时,可以用this关键字来区分。
表示成员变量name,name表示局部变量name。
例如:public class MyClass {private String name;public void setName(String name) { = name; 成员变量name赋值}public String getName() {return ; 返回成员变量name的值}}3. 在方法内部,可以使用this来调用当前对象的其他方法。
这种情况下,方法名后面需要加上参数列表。
例如:public class MyClass {private int count;public void increaseCount() {this.count++; 调用当前对象的成员变量count}public void printCount() {System.out.println("Count: " + this.getCount()); 调用当前对象的方法getCount()}private int getCount() {return this.count;}}总结:this关键字主要用于指代当前对象,可以用于调用同一个类的其他构造方法、区分成员变量和局部变量、调用当前对象的其他方法。
java构造方法格式
java构造方法格式Java中,构造方法是一种特殊的方法,用于创建和初始化对象。
每当我们创建一个新对象时,都会调用其相应的构造方法。
构造方法的名称必须与类名相同,它没有返回类型,并且不能被直接调用。
下面是Java构造方法的格式:```[public] [private] [protected] ClassName([List of Parameters]) {// Constructor body}```上面的代码中,方括号表示可选项,构造方法名称必须与类名完全相同,构造方法可以使用任何访问修饰符(public、private或protected),并且可以拥有一些参数。
下面是Java构造方法的一些特点和用法:1. 构造方法没有返回值类型,即使有返回语句也不会返回任何值。
2. 当我们不为类定义构造方法时,编译器会自动生成一个默认的无参构造方法。
3. 在创建对象时,我们可以调用重载的构造方法来为对象赋初值。
4. 在一个类中可以定义多个构造方法,只要它们的参数列表不同即可。
5. 构造方法可以使用this关键字调用本类中的其他构造方法,用于重载构造方法时避免重复代码。
下面是一些示例代码,用于演示Java构造方法的使用:```public class Car {private String make;private String model;private int year;// 无参构造方法public Car() {}// 有参构造方法public Car(String make, String model, int year) {this.make = make;this.model = model;this.year = year;}// 使用this关键字调用本类中的其他构造方法public Car(String make, String model) {this(make, model, 2020);}// Getter和Setter方法public String getMake() {return make;}public void setMake(String make) { this.make = make;}public String getModel() {return model;}public void setModel(String model) { this.model = model;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}}```上面的示例代码定义了一个Car类,其中包含三个属性make、model 和year,以及三个构造方法和三个Getter/Setter方法。
java中的this用法
java中的this用法
在Java中,this关键字有以下用法:
1. 指代当前对象:this可以用来指代当前对象,即当前方法被调用的对象。
可以使用this来调用当前对象的属性或方法。
2. 区分局部变量和成员变量:当方法的参数名或局部变量与成员变量重名时,可以通过使用this关键字来引用成员变量。
3. 作为构造器:在一个构造器内部,可以使用this关键字来调用同一类的另一个构造器。
这样可以避免重复的初始化代码。
4. 作为方法参数传递:this关键字可以作为参数传递给其他方法,以便在其他方法中使用当前对象。
5. 作为返回值:this关键字也可以作为返回值返回给调用者。
这样可以实现方法链式调用。
总的来说,this关键字的主要作用是指代当前对象,帮助在类中访问成员变量、方法或调用构造器的重载版本。
Javathis关键字详解(3种用法)
Javathis关键字详解(3种⽤法)Java this关键字详解(3种⽤法)this 关键字是常⽤的关键字,可⽤于任何实例⽅法内指向当前对象,也可指向对其调⽤当前⽅法的对象,或者在需要当前类型对象引⽤时使⽤。
下⾯我们根据⽰例分别讲解 this 关键字的作⽤。
this.属性名⼤部分时候,普通⽅法访问其他⽅法、成员变量时⽆须使⽤ this 前缀,但如果⽅法⾥有个局部变量和成员变量同名,但程序⼜需要在该⽅法⾥访问这个被覆盖的成员变量,则必须使⽤ this 前缀。
例 1假设有⼀个教师类 Teacher 的定义如下:1. public class Teacher {2. private String name; // 教师名称3. private double salary; // ⼯资4. private int age; // 年龄5. }在上述代码中 name、salary 和 age 的作⽤域是 private,因此在类外部⽆法对它们的值进⾏设置。
为了解决这个问题,可以为 Teacher 类添加⼀个构造⽅法,然后在构造⽅法中传递参数进⾏修改。
代码如下:1. // 创建构造⽅法,为上⾯的3个属性赋初始值2. public Teacher(String name,double salary,int age) {3. = name; // 设置教师名称4. this.salary = salary; // 设置教师⼯资5. this.age = age; // 设置教师年龄6. }在 Teacher 类的构造⽅法中使⽤了 this 关键字对属性 name、salary 和 age 赋值,this 表⽰当前对象。
=name语句表⽰⼀个赋值语句,等号左边的 是指当前对象具有的变量 name,等号右边的 name 表⽰参数传递过来的数值。
创建⼀个 main() ⽅法对 Teacher 类进⾏测试,代码如下:1. public static void main(String[] args) {2. Teacher teacher = new Teacher("王刚",5000.0,45);3. System.out.println("教师信息如下:");4. System.out.println("教师名称:"++"\n教师⼯资:"+teacher.salary+"\n教师年龄:"+teacher.age);5. }运⾏该程序,输出的结果如下所⽰。
Java中this和super的用法详解
Java中this和super的⽤法详解前⾔这次我们来回顾⼀下this和super这两个关键字的⽤法,作为⼀名Java程序员,我觉得基础是最重要的,因为它决定了我们的上限,所以我的⽂章⼤部分还是以分享Java基础知识为主,学好基础,后⾯的知识我想学起来就变得简单。
废话不多说,进⼊正⽂。
thisthis 关键字只能在⽅法内部使⽤,表⽰对调⽤⽅法的那个对象的引⽤。
其实简单来说 this 关键字就是表⽰当前对象,下⾯我们来具体介绍 this 关键字在Java中的⽤法。
1、调⽤成员变量在⼀个类的⽅法内部,如果我们想调⽤其成员变量,不⽤ this,我们会怎么做?public class ThisTest {private String name = "xiaoming";public String getName() {return name;}public void setName(String name) {name = name;}}看上⾯的代码,我们在ThisTest类中创建了⼀个name属性,然后创建了⼀个setName⽅法,注意这个⽅法的形参也是String name,那么我们通过name = name这样赋值,会改变成员变量name的属性吗?public static void main(String[] args) {ThisTest thisTest = new ThisTest();thisTest.setName("xiaoma");System.out.println(thisTest.getName());}打印结果是xiaoming,⽽不是我们重新设置的xiaoma,显然这种⽅式是不能在⽅法内部调⽤到成员变量的。
因为形参的名字和成员变量的名字相同,setName⽅法内部的name = name,根据最近原则,编译器默认是将这两个name属性都解析为形参name,从⽽导致我们设值操作和成员变量name完全没有关系,当然设置不了。
关键字this和super在Java中的应用分析
S s m. t r t (新 对 象 实 例 化 ” ; yt o . i l ” e up n n )
)
p bi Sr gg t a ( { u l tn eN me ) c i
J
p bi td n ( t n a ) u l Su e t S r gn me c i
rtm ” 名 :+hs a ; eu 姓 ” tinme .
在一个Jv 类中, aa 构造方法是一个与类 同名的方法, 必须 与类的名字相 同。而且在 Jv 类 中必须存在一个构造方法 。 aa 如果在代码中没有 显示 的体现构造方法的话 ,那么编译器在 编译的时候会 自动添加一个没有形式参数的构造方法。在一
和 sp r u 来实现 e 本文就具体来分析一下 ti和 sp r hs u 的用法 e
文章编号 :10 —9 3(0 0) 1・5 -3 0 73 7 2 1 0 20 50
什 么情况下使用它们, 如何正确它们, 该文具体 分析 ti 和 sp r hs u 的使用方法。 e
关键词 :对象
中图分类号 : P T3
文献标识码 :A
也 hs . 在 Jv 中,hs a a t 是一个 引用对象本身的指针, i 用来表示当 有 些程 序 员 即 使在 没 有 相 同 变量 的时 候 , 喜 欢 使用 ti 成 员 前 的对象 , 它只和对象有关。sp r u 关键字适用于子类访 问父 变量 的形式来引用变量。这主要是从便于代码 的阅读考虑 。 e
1ti的 主 要 用 法 及 其 含 义 hs
11使 用 ti 调用本类 中的成员变量(. hs 属性 )
在 方 法 体 内 定 义 的变 量 称 为 局 部 变 量 ,在 类 的 内部 方 法 个类中可以存在 多个构造方法 ,这些构造方法都采用相 同的 体 的 外 部 定 义 的变 量 称 为成 员变 量 。如 果 成 员变 量 和 方 法 中 名 字 ,只 是形 式 参 数 不 同 。Jv 语 言 就 凭 用 户 的 参 数来 判 断 aa 的 局 部 变 量 的 名字 相 同 时 ,那 么 在 方 法 中 成 员变 量 将 会 被 屏 调用哪一个构造方法 。当一个类 中有多个构造方法时,可以 蔽 。 果 这 个 时 候还 要 使 用成 员变 量 , 需 要 使 用 关键 字 ti。 利用 t s 如 就 hs i h 关键字相互调用, 以用 “hs参数列表) 的形式完 可 ti( ”
Java语言中this关键字的用法详解_王丽丽
容赋给中
的,跟类中的属性完全不沾边。
另外,这个程序代码中,有一个成员变量n a m e,同时在方
法中有个形式参数,参数名也是n a m e。然后在方法中将形式参
数name的值传递给成员变量name。虽然我们可以看明白这个代
}
public Student (String name)
{ System.out.println("新对象实例化") ; = name ;
}
public Student (String name,int age) // 通过构造方
法赋值
{
System.out.println("新对象实例化") ;
也是相同的道理。在方法体内定义的变量称为局部变量,在类的 内部方法体的外部定义的变量称为成员变量。如果成员变量和方 法中的局部变量的名字相同时,那么在方法中成员变量将会被屏 蔽。如果这个时候还要使用成员变量,就需要使用关键字t h i s。 使用this引用成员变量的方法格式:this.成员变量名。
“this(参数列表)”的形式完成,用this修改以上的代码如下:
class Student
{ private String name ; private int age ; public Student(){
System.out.println("新对象实例化") ; } public Student (String name)
示出哪一个是类中的属性,就要加上“t h i s.属性名称”的操作,
将student类的代码改进如下:
class Student { private String name;
Java中this,static,final,const用法详解
Java中this,static,final,const⽤法详解⼀、this⽤类名定义⼀个变量的时候,定义的应该只是⼀个引⽤,外⾯可以通过这个引⽤来访问这个类⾥⾯的属性和⽅法,那们类⾥⾯是够也应该有⼀个引⽤来访问⾃⼰的属性和⽅法纳?JAVA提供了⼀个很好的东西,就是 this 对象,它可以在类⾥⾯来引⽤这个类的属性和⽅法。
Java关键字this只能⽤于⽅法⽅法体内。
当⼀个对象创建后,Java虚拟机(JVM)就会给这个对象分配⼀个引⽤⾃⾝的指针,这个指针的名字就是 this。
因此,this只能在类中的⾮静态⽅法中使⽤,静态⽅法和静态的代码块中绝对不能出现this,这在“Java关键字static、final 使⽤总结”⼀⽂中给出了明确解释。
并且this只和特定的对象关联,⽽不和类关联,同⼀个类的不同对象有不同的this。
总结⼀下,this主要要三种⽤法:1、表⽰对当前对象的引⽤!2、表⽰⽤类的成员变量,⽽⾮函数参数,注意在函数参数和成员变量同名是进⾏区分!其实这是第⼀种⽤法的特例,⽐较常⽤,所以那出来强⼀下。
3、⽤于在构造⽅法中引⽤满⾜指定参数类型的构造器(其实也就是构造⽅法)。
但是这⾥必须⾮常注意:只能引⽤⼀个构造⽅法且必须位于开始!注意:this不能⽤在static⽅法中!所以甚⾄有⼈给static⽅法的定义就是:没有this的⽅法!虽然夸张,但是却充分说明this不能在static⽅法中使⽤!⼆、staticstatic表⽰“全局”或者“静态”的意思,⽤来修饰成员变量和成员⽅法,也可以形成静态static代码块,但是Java语⾔中没有全局变量的概念。
被static修饰的成员变量和成员⽅法独⽴于该类的任何对象。
也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,Java虚拟机就能根据类名在运⾏时数据区的⽅法区内定找到他们。
因此,static对象可以在它的任何对象创建之前访问,⽆需引⽤任何对象。
this,super关键字
this和super 和
• private String strain;//品种在子类中使用 在子类中使用this的前提就是 在子类中使用 的前提就是 父类中存在无参构造。 父类中存在无参构造。 • public Dog(String strain){this();父类必须存在无参 父类必须存在无参 • this.strain=strain;} • public Dog(String name1,String strain){ • super(name1);显式调用父类有参 显式调用父类有参 • this.strain=strain; } • public Dog(){ } • 如果子类的构造函数中没有通过 子类的构造函数中没有通过super显式调用父类的有 子类的构造函数中没有通过 显式调用父类的有 参构造方法,则系统默认会调用父类的无参构造方法 系统默认会调用父类的无参构造方法。 参构造方法 系统默认会调用父类的无参构造方法 this(),super()不能用于同一个构造 不能用于同一个构造因为他们都要位于构造 不能用于同一个构造 的第一条语句.
this和static的区别 和 的区别
• static修饰 修饰的属性和方法称为类属性 类变 类属性(类变 修饰 类属性 类方法.不用static修饰的属性和方法 量)和类方法 类方法 称为实例属性 实例变量 实例方法 实例属性(实例变量 实例方法。 实例属性 实例变量),实例方法 • this指的是当前实例【不能使用类方法中】。 当前实例【 当前实例 不能使用类方法中】 • 由于静态成员函数存在于类一级 静态成员函数存在于类一级,并且不 静态成员函数存在于类一级 是对象的一部分,因此没有 this 指针。在 没有 指针 静态方法中引用 this 是错误的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用一个且仅一次构造器!*/
this.i=i++;//this以引用该类的成员变量
System.out.println("Int constructor: "+i+"\n"+"String constructor: "+s);
}
//this是B
public ThisTest increment(){
this.i++;
return this;//返回的是当前的对象,该对象属于(ThisTest)
}
public static void main(String[] args){
还有就是注意:this不能用在static方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
4 、class A{}
class B extends A
{
//super是A
ThisTest tt0=new ThisTest(10);
ThisTest tt1=new ThisTest("ok");
ThisTest tt2=new ThisTest(20,"ok again!");
System.out.println(tt0.increment().increment().increment().i);
String constructor: ok
String constructor: ok again!
Int constructor: 21
String constructor: ok again!
14
细节问题注释已经写的比较清楚了,这里不在赘述,只是总结一下,其实this主要要三种用法:
//tt0.increment()返回一个在tt0基础上i++的ThisTest对象3;+的ThisTest对象!
}
}
运行结果:
Int constructor i——this.i: 10——11
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
System.out.println("Int constructor i——this.i: "+i+"——"+this.i);
System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1));
//从两个输出结果充分证明了i和this.i是不一样的!
很多人在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚。现在让大家看一个小例子,给你分享一下JAVA中“this”的用法!
/**
* @author fengzhi-neusoft
*
* 本示例为了说明this的三种用法!
*/
package test;
public class ThisTest {
private int i=0;
//第一个构造器:有一个int型形参
ThisTest(int i){
this.i=i+1;//此时this表示引用成员变量i,而非函数参数i
ThisTest(int i,String s){
this(s);//this调用第二个构造器
//this(i);
/*此处不能用,因为其他任何方法都不能调用构造器,只有构造方法能调用他。
但是必须注意:就算是构造方法调用构造器,也必须为于其第一行,构造方法也只能调
}
// 第二个构造器:有一个String型形参
ThisTest(String s){
System.out.println("String constructor: "+s);
}
// 第三个构造器:有一个int型形参和一个String型形参