面向对象的三个基本特征(封装)

来源:互联网 发布:单片机采样频率 编辑:程序博客网 时间:2024/05/22 04:29

面向对象的三个基本特征是:封装、继承、多态

封装 :

百度上解释的方法为:

前面有private 修饰的【属性】或者是【方法】,  不能【直接】被外部类的实例化对象访问,这样就是封装
封装是面向对象的特征之一,是对象和类概念的主要特性。 

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

 

封装的优点

  • 1. 良好的封装能够减少耦合。

  • 2. 类内部的结构可以自由修改。

  • 3. 可以对成员变量进行更精确的控制。

  • 4. 隐藏信息,实现细节。


下面来看几个例子
例1:
修改属性的可见性来限制对属性的访问(一般限制为private),这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
public class Person {    private String name;    private int age;}



例2:
public class Person{    private String name;    private int age;​    public int getAge(){//对age的取值方法      return age;    }​    public String getName(){//对name的取值方法      return name;    }​    public void setAge(int age){//对age的赋值方法      this.age = age;    }​    public void setName(String name){//对name的赋值方法      this.name = name;    }}

对每个私有值属性提供对外的公共方法用来访问,也就是创建一对赋取值方法,即例2中的getAge,getName,Setname,Setage用于对私有属性的访问


例3
public class Student {//静态的数据 String name; int id;    //学号 int age; String gender; int weight;//动态的行为 public void study(){ System.out.println(name+"在學習"); }  public void sayHello(String sname){ System.out.println(name+"向"+sname+"說:你好!"); }}
public class Test1 { public static void main(String[] args) {Student s1 = new Student();s1.name = "小明";s1.study();//通过接口控制来调用封装好的类里面的方法s1.sayHello("mary);Student s2 = new Student();s2.age = 18;s2.name="小兔崽子";}}
这不是封装,因为没有用private来修饰的东西,在一个类没有用private来修饰的属性或者是方法