java之私有属性与方法,构造方法

本文详细介绍了Java中的方法定义与使用,包括私有方法、参数传递方式、可变参数及构造方法等核心概念,并通过具体示例进行了解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,定义方法

修饰符 方法返回类型 方法名(方法参数列表) {
    若干方法语句;
    return 方法返回值;
}

2,private方法示例

class PersonTest{
	private String name; //	私有属性
	
	public void setName(String name) {  //括号里面表示输入的参数类型
		this.name=name;    //this.name表示定义的name属性(this不可省略),name表示输入的name
	}
	
	public String getName() {  //String表示调用到的参数类型
		return name;  //此处省略this
	}
}

public class Main {
	public static void main(String[] args) {
		PersonTest p1=new PersonTest();
		PersonTest p2=new PersonTest();
		
		p1.setName("Alice"); //setname赋值
		p2.setName("Tom");
		System.out.println(p1.getName()+" is beautiful"); //getname调用
		System.out.println(p2.getName()+" is handsome");
	}
	
}

3,方法可以包含0个或任意个参数。方法参数用于接收传递给方法的变量值。调用方法时,必须严格按照参数的定义一一传递。可变参数用**类型…**定义,可变参数相当于数组类型

class PersonTest{
	private String[] name;
	
	public void setName(String... name) {
		this.name=name;
	}
}

public class Main {
	public static void main(String[] args) {
		PersonTest p1=new PersonTest();
		
		p1.setName("Alice","Lucy","LiLy"); //传入三个值
		p1.setName("Alice");//传入一个值
		p1.setName();//传入0个值
		p1.setName(new String[] {"Alice","Lucy","LiLy"});//传入一个String[]
	}
	
};

4,参数绑定
调用方把参数传递给实例方法时,调用时传递的值会按参数位置一一绑定.
4.1,基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响.

class PersonTest{
	private int age;

    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

public class Main {
	public static void main(String[] args) {
		PersonTest p=new PersonTest();
		
		int n = 15; // n的值为15
        p.setAge(n); // 传入n的值
        System.out.println(p.getAge()); // 15
        n = 20; // n的值改为20,但未传入
        System.out.println(p.getAge());
	}
	
};

4.2,引用类型参数的传递,调用方的变量,和接收方的参数变量,指向的是同一个对象。双方任意一方对这个对象的修改,都会影响对方(因为指向同一个对象)

class PersonTest{
	private String[] name;

    public String getName() {
        return this.name[0] + " " + this.name[1];
    }

    public void setName(String[] name) {
        this.name = name;
    }
}

public class Main {
	public static void main(String[] args) {
		PersonTest p=new PersonTest();
		
		String[] fullname = new String[] { "Homer", "Simpson" };
        p.setName(fullname); // 传入fullname数组
        System.out.println(p.getName()); // "Homer Simpson"
        fullname[0] = "Bart"; // fullname数组的第一个元素修改为"Bart"
        System.out.println(p.getName()); 
	}
	
};

5,构造方法
在创建对象实例时就把内部字段全部初始化为合适的值就是构造方法,创建实例的时候,实际上是通过构造方法来初始化实例的.如示例中定义一个构造方法,能在创建Person实例的时候,一次性传入name和age,完成初始化;

class PersonTest{
	private String name;
    private int age;

    public PersonTest(String name, int age) { //与类名一样的方法就是构造方法
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

public class Main {
	public static void main(String[] args) {
		PersonTest p=new PersonTest("Alice",12);
		
		System.out.println(p.getName());
        System.out.println(p.getAge()); 
	}
	
}

如果一个类没有定义构造方法,编译器会自动生成一个默认构造方法,它没有参数,也没有执行语句,类似于一个空壳,当有新的构造方法时可以一起执行.如果既要能使用带参数的构造方法,又想保留不带参数的构造方法,那么只能把两个构造方法都定义出来.

class PersonTest{
	private String name;
    private int age;

    public PersonTest() {
    }

    public PersonTest(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

public class Main {
	public static void main(String[] args) {
		PersonTest p1=new PersonTest("Alice",12);
		PersonTest p2=new PersonTest();
		
		//System.out.println(p1.getName());
        //System.out.println(p1.getAge()); 
	}
	
}

多构造方法
可以定义多个构造方法,在通过new操作符调用的时候,编译器通过构造方法的参数数量、位置和类型自动区分:

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person(String name) {
        this(name, 18); // 调用另一个构造方法Person(String, int)
    }

    public Person() {
        this("Unnamed"); // 调用另一个构造方法Person(String)
    }
}

参考文章:
https://www.liaoxuefeng.com/wiki/1252599548343744/1260452774408320

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值