面向对象基础2(成员变量和方法)

本文详细介绍了Java中的this关键字及其作用,包括代表对象引用和区分成员变量与局部变量。同时,讲解了方法的所属属性,强调了static方法与实例方法的区别。还提及了可变参数方法的使用,展示了如何通过类型...形参名的方式方便地传递多个参数。
摘要由CSDN通过智能技术生成

面向对象基础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具有动态性质,谨遵循 “谁调用了thisthis就代表谁”

例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 
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值