1、 setter方法和getter方法的作用
class Person{
int age;
String name;
public void tell(){
System.out.println("name is:"+name+" age is :"+age);
}
}
public class HelloWorld{
public static void main(String []args){
Person per = new Person();
per.age=10; // 初始化年龄
per.name="张三"; // 初始化姓名
}
}
这段代码可以执行,语法上没有错误,但是这样做却是有问题的,因为这里属性可以被外部所访问
我们可以用setter方法和getter方法来完成这个工作,将成员变量封装,使得其不能被外部对象所访问。
class Person{
int age;
String name;
public void setAge(int a){
age = a;
}
public int getAge(){
return age;
}
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void tell(){
System.out.println("name is:"+name+" age is :"+age);
}
}
public class HelloWorld{
public static void main(String []args){
Person per = new Person();
per.setName("zhangsan");
per.setAge(20)
per.tell();
}
}
2、构造方法的作用
2.1 使用构造方法是为了给类中的属性初始化,声明构造方法要注意以下几点:
1、构造方法的名称必须和类名称一致
2、构造方法的声明处不能有任何返回值类型的声明
3、不能在构造方法中使用return返回一个值
2.2 如果没有声明构造方法,Java会自动生成一个无参的构造方法
构造方法既然是方法,肯定可以传递参数
class Person{
int age;
String name;
public Person(int a,String n){ // 定义一个带两个参数的构造方法并初始化
this.getAge(a);
this.getName(n);
}
public void setAge(int a){
age = a;
}
public int getAge(){
return age;
}
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void tell(){
System.out.println("name is:"+name+" age is :"+age);
}
}
public class HelloWorld{
public static void main(String []args){
Person per = new Person(10,"张三");
per.tell();
}
}
2.3 构造方法的重载
构造方法和普通方法一样,都是支持重载的,只要是参数类型或者个数不一样,都可以被重载。
class Person{
int age;
String name;
public Person(){} // 无参的构造方法
public Person(int a){ // 带一个参数的构造方法
this,getAge(a);
}
public Person(int a,String n){ // 定义一个带两个参数的构造方法并初始化
this.getAge(a);
this.getName(n);
}
public void setAge(int a){
age = a;
}
public int getAge(){
return age;
}
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void tell(){
System.out.println("name is:"+name+" age is :"+age);
}
}
public class HelloWorld{
public static void main(String []args){
Person per = null; // 声明对象时不调用构造方法
per = new Person(10,"张三"); // 实例化对象时调用构造方法
per.tell();
}
}
2.4 匿名对象
顾名思义,匿名就是没有名字,java里如果一个对象只使用一次,那么可以定义为匿名对象
class Person{
int age;
String name;
public Person(int a,String n){ // 定义一个带两个参数的构造方法并初始化
this.getAge(a);
this.getName(n);
}
public void setAge(int a){
age = a;
}
public int getAge(){
return age;
}
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
public void tell(){
System.out.println("name is:"+name+" age is :"+age);
}
}
public class HelloWorld{
public static void main(String []args){
new Person(10,"张三").tell(); // 匿名对象
}
}