Java 封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
-
1. 良好的封装能够减少耦合。
-
2. 类内部的结构可以自由修改。
-
3. 可以对成员变量进行更精确的控制。
-
4. 隐藏信息,实现细节。
实现Java封装的步骤
1. 修改属性的可见性来限制对属性的访问(一般限制为private)
例如:
public class Person { private String name; private int age; }
这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
public class Person{
private String name;
private int age;
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
}
一般情况下:主要用于将成员变量私有化,最好再提供对应的set(),get()方法。提高对数据访问的安全性。
this指针:
(1)this:代表所在类的对象的引用
方法被哪个对象调用,this就代表那个对象
(2)使用this的情况:
局部变量和成员变量重名。这时候的this.变量名,代表的是所在类的对象的引用。
不加this
/*
创建一个类。然后
this 指针的作用就是用来区分两个相同变量的区别
如果不用的话,就搞的是默认值
*/
class person{
//一般情况下,数据变量都得用private
private String name;
private int age;
//一个成员变量一般情况下,有一个获取成员变量,一个得到成员变量
public void setname(String n){
name = n;
}
public String getname(){
return name;
}
public void setage(int k){
age = k;
}
public int getage(){
return age;
}
//空参构造函数
person (){
}
//带参构造函数,函数重载
person (String name,int age ){
name = name;
age = age;
}
public void talk(){
System.out.println(name + "," + age +"岁会说话") ;
}
}
class This {
public static void main(String[] args){
/*person gupei = new person();
gupei.setname("王二麻子");
System.out.println(gupei.getname());
gupei.setage(18);
System.out.println(gupei.getage());
*/
person gupei = new person("王二麻子",18);
gupei.talk();
}
}
结果会以字符串和整型的初始化来表示,没有达到想要的效果。
/*
创建一个类。然后
this 指针的作用就是用来区分两个相同变量的区别
如果不用的话,就搞的是默认值
*/
class person{
//一般情况下,数据变量都得用private
private String name;
private int age;
//一个成员变量一般情况下,有一个获取成员变量,一个得到成员变量
public void setname(String n){
name = n;
}
public String getname(){
return name;
}
public void setage(int k){
age = k;
}
public int getage(){
return age;
}
//空参构造函数
person (){
}
//带参构造函数,函数重载
person (String name,int age ){
this.name = name;
this.age = age;
}
public void talk(){
System.out.println(name + "," + age +"岁会说话") ;
}
}
class This {
public static void main(String[] args){
/*person gupei = new person();
gupei.setname("谷沛");
System.out.println(gupei.getname());
gupei.setage(18);
System.out.println(gupei.getage());
*/
person gupei = new person("谷沛",18);
gupei.talk();
}
}
这样就达到了初始化的目的。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114847.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...