2.封装
把属性封起来(私有化private)
提供了一对公有(public)的方法(getter/setter)来对属性进行操作(读取和设置)
这样做以后可以对属性值的有效性进行判断,避免出现不合法的值
使用private封装后,如新建了Person类,使用private封装name,age等属性后,在main函数中new一个Person对象后,不能直接调用Person类的属性,因此,在封装后,要使用Person类的属性需要使用公有的方法public方法 get和set方法来获取属性值和改变属性值
public class Person
{
private String name;
private int age;
}
添加get和set方法
public class Person
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
在main函数中
public class Test1
{
public static void main(String[] args)
{
Person p=new Person();
p.setAge(10);
p.setName("zhangsan");
System.out.println(p.getAge()+" "+p.getName());
}
}
输出结果为10
即可以使用set来设置属性值,使用get方法可以获取值
3.构造方法
定义:与类名同名 的方法 ,没有返回值
作用:在(new)创建对象的时候,同时初始化一些一些信息,有传值的作用;同时构造函数也有有参和无参两种形式
public class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
}
在创建类的时候,创建构造方法,()内为传入参数
在main函数中
public class Test1
{
public static void main(String[] args)
{
Person p=new Person("张三",10);
}
}
main函数中new对象实例p的时候,因为Person类的构造函数有参数,因此在对象实例化的时候,必须要传入参数,因此 Person p=new Person("张三",10);就相当与继承中的setName()和setAge()方法将name和age设置了值,因此要打印出p的name和age属性值,要在Person类中给封装的属性添加get()方法才能获取到利用构造函数传入的属性值
是一种很特殊的函数gsan.sex='男';
用于创建对象
如果没有写构造方法,那么系统会提供一个默认无参构造方法
如果你写了构造方法,那么系统将不再提供构造方法,那么这个时候只能用你自己写的构造方法
除了封装,可以使用get和set方法来获取和改变属性值,还可用构造方法的方式。