封装
之隐藏对象的属性和实现细节,仅对外提供公共访问方式
优点:将变化隔离
便于使用
提高重用性
提高安全性
原则:将不需要对外提供的内容都隐藏起来
把属性都隐藏,提供公共方法对其访问
——private:私有,权限修饰符,用于修饰类中的成员(变量/函数)
只在本类中有效
//运行结果:Person.java:11: 错误: age可以在Person中访问private
// p.age=20;
class Person{
private int age;
void speak(){
System.out.println("age="+age);
}
}
class PersonDemo{
public static void main(String[] args){
Person p=new Person();
p.age=20;
p.speak();
}
}
接上例:将AGE私有化以后,类以外建立了对象也不能直接访问,需要在person类中提供对应的访问形式
class Person{
private int age;
void speak(){
System.out.println("age="+age);
}
public void setAge(int x){//访问方式
if(x>0){
age=x;
speak();
}
else{
System.out.println("年龄必须>0");
}
}
}
class PersonDemo{
public static void main(String[] args){
Person p=new Person();
p.setAge(-20);
}
}
**私有是封装的一种表现形式
构造函数
特点:函数名与类名相同
不用定义函数返回值类型
不可以写return语句
作用:给对象进行初始化
注意:默认构造函数的特点
多个构造函数以重载的形式存在
class Person1{
Person1(){
System.out.println("Person run");
}
}
class Person1Demo{
public static void main(String[] args){
Person1 p=new Person1();
}
}
构造函数对象一旦建立就会调用与之对应的构造函数
当没有定义构造函数是,系统会默认给该类加入一个空参数的构造函数Person(){}
当在类中自定义构造函数后,默认的构造函数消失
class Person{
private String name;
private int age;
Person(){
System.out.println("A:name="+name+"__age="+age);
}
Person(String n){
name=n;
System.out.println("B:name="+name+"__age="+age);
}
Person(String n,int a){
name=n;
age=a;
System.out.println("C:name="+name+"__age="+age);
}
}
class Person1Demo{
public static void main(String[] args){
Person p=new Person();
Person p1=new Person("wan");
Person p2=new Person("tan",2);
}
}
构造函数是在对象一建立就运行,给对象初始化;
一般方法是对象调用才执行,是给对象添加对象具备的功能
一个对象建立,构造函数只运行一次,一般方法可以调用多次
构造代码块
给对象进行初始化
对象一建立就运行,并且优先于构造函数执行
与构造函数区别
构造代码块是对所有对象统一初始化
构造函数是对相应对象初始化
class Person{
private String name;
private int age;
{ //构造代码块
System.out.println("Cry...........");
}
Person(){
System.out.println("A:name="+name+"__age="+age);
}
Person(String n){
name=n;
System.out.println("B:name="+name+"__age="+age);
}
Person(String n,int a){
name=n;
age=a;
System.out.println("C:name="+name+"__age="+age);
}
}
class Person1Demo{
public static void main(String[] args){
Person p=new Person();
Person p1=new Person("wan");
Person p2=new Person("tan",2);
}
}