面向对象基础2(成员变量和方法)
this关键字
this可以出现在非static的方法、构造器中。作用如下:
代表了该方法的调用者——即“谁用了该方法,this代表谁”
例1
public class Pig {
String color;
public void move() {
System.out.println("running ");
}
public void test() {
System.out.println("测试方法");
this.move();
System.out.println(this.color);
}
}
方法中并没有static
关键字,所以是对象调用:对象.方法()
public class PigTest {
public static void main(String[] args) {
Pig p1 = new Pig();
p1.color="white";
p1.test();
Pig p2=new Pig();
p2.color="black";
p2.test();
}
}
/*
测试方法
running
white
测试方法
running
black
*/
在另一个类PigTest
中:
p1
调用了test
方法,则在Pig
类中的this
就代表p1
p2
调用了test
方法,则在Pig
类中的this
就代表p2
this
具有动态性质,谨遵循 “谁调用了this
,this
就代表谁”
例2
public class Apple {
String color;
double weight;
//构造器用于该对象的初始化
public Apple(String color,double weight)
//此时调用构造器需要设置参数
//且只能用关键字new调用构造器
{
this.color=color;
this.weight=weight;
}
}
由上例可见,this的另一个主要作用就是区分方法或是构造器中的局部变量,尤其是该局部变量和成员变量同名时
方法详解
方法的所属性:
-
方法类似于函数,但与函数不同的是,方法不能独立存在,必须定义在类里面
-
定义在类中的方法,从逻辑上看,
如果该方法有
static
修饰,该方法属于类本身们应该用类调用;如果该方法无
static
修饰,该方法属于对象本身 -
方法不能独立执行
方法一定要有调用者
-
如果调用同一个类中的方法,可以省略调用者,系统会添加默认的调用者。
如果该方法是实例方法,将添加
this
作为实例调用者例3
public class Item { public static int add(int a,int b) { return a+b; } public void info() { System.out.println("an info"); } public void test(){ this.info(); info(); //上两行作用完全一样 //调用同一个类的非static方法,默认添加this为作用者 System.out.println(add(22,44));//不建议 System.out.println(Item.add(33,22)); //上两行作用完全一样 //调用同一个类的static方法,默认添加类为作用者 } }
形参个数可变的方法
类型...形参名
:形参个数可变的方法
本质上是数组,该写法等同于
类型[] 形参名
优势——调用方法时更加的方便,可以直接传入多个元素,系统将其自动封装为数组
缺点——只能作为形参列表的最后一个形参
public class VarArgs {
//个数可变的参数
public void test(int a, String... name) {
System.out.println("a为参数" + a);
for (String s : name) {
System.out.print(s);
System.out.print(" ");
}
}
public static void main(String[] args) {
VarArgs va = new VarArgs();
va.test(25, "gtn", "love", "jxq");
}
}
/*
gtn love jxq
*/