面向对象基础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();}}/*测试方法runningwhite测试方法runningblack*/
在另一个类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*/
