java之私有属性与⽅法,构造⽅法
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.Name()+" is beautiful"); //getname调⽤
System.out.Name()+" is handsome");
}
}
3,⽅法可以包含0个或任意个参数。⽅法参数⽤于接收传递给⽅法的变量值。调⽤⽅法时,必须严格按照参数的定义⼀⼀传递。可变参数⽤**类型…**定义,可变参数相当于数组类型
class PersonTest{
private String[] name;
public void 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,基本类型参数的传递,是调⽤⽅值的复制。双⽅各⾃的后续修改,互不影响.
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.Age()); // 15
n = 20; // n的值改为20,但未传⼊
System.out.Age());
}
};
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" };
java接口有没有构造方法p.setName(fullname); // 传⼊fullname数组
System.out.Name()); // "Homer Simpson"
fullname[0] = "Bart"; // fullname数组的第⼀个元素修改为"Bart"
System.out.Name());
}
};
5,构造⽅法
在创建对象实例时就把内部字段全部初始化为合适的值就是构造⽅法,创建实例的时候,实际上是通过构造⽅法来初始化实例的.如⽰例中定义⼀个构造⽅法,能在创建Person实例的时候,⼀次性传⼊name和age,完成初始化;
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.Name());
System.out.Age());
}
}
如果⼀个类没有定义构造⽅法,编译器会⾃动⽣成⼀个默认构造⽅法,它没有参数,也没有执⾏语句,类似于⼀个空壳,当有新的构造⽅法时可以⼀起执⾏.如果既要能使⽤带参数的构造⽅法,⼜想保留不带参数的构造⽅法,那么只能把两个构造⽅法都定义出来.
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.Name());
//System.out.Age());
}
}
多构造⽅法
可以定义多个构造⽅法,在通过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)
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论