Java面向对象三大特征-封装
封装
-
概念
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.
-
好处
-
只能通过规定方法访问
public class Person { //隐藏类的信息,这样外部的类就不能访问 private String name ; private int age; //公共权限构造方法赋值 public Person(String n,int a){ if(n!=null) name = n; if(a>0) age = a; } }
public class Test { //对构造方法中私有权限赋值 public static void main(String[] args) { new Person("张三" ,10); } }
-
隐藏类的实现细节
-
方便加入控制语句
-
方便修改实现
-
-
具体表现
public class Person { //隐藏类的信息,这样外部的类就不能访问,即封装 private String name ; private int age; public Person(){ } //可以向外部类提供专门的方法,对类中的私有属性进行访问 public void setAge(int age) { this.age = age; } //可以向外部类提供专门的方法,对类中的私有属性进行输出 public int getAge() { return age; } public void setName(String name) { this.name = name; } public String getName() { return name; } }
public class Test { public static void main(String[] args) { Person p1 = new Person();//创建对象 p1.setAge(10);//向私有属性赋值 p1.setName("张三"); System.out.println(p1.getAge());//输出私有属性 System.out.println(p1.getName()); } }
注意:在idea中可以通过**Generate…**中的Getter and Setter对私有属性快速生成访问方法.
-
this关键字
this关键字代表自身类的对象
使用this关键字引用成员变量和成员方法
在一个类的方法或构造方法内部,可以使用“this.成员变量名”这样的格式来引用成员变量名,常常用来区分同名的成员变量和局部变量。
注意:this关键字必须放在非静态方法里面
例如:public void setName(String name) {
this.name = name;//this对当前对象的引用,此处加以赋值name,同时也是为了区分成员变量与输入的参数.//在堆中用new创建对象,this关键字代表堆中的这个对象
}