面向对象基础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
*/