封装与访问修饰符

Java 面向对象编程入门

Sani Yusuf

Lead Software Engineering Content Developer

理解封装

  • 可用手机来解释封装
  • 你只能访问公开功能,如屏幕、扬声器等
  • 内部实现对用户完全隐藏

手机

Java 面向对象编程入门

公共属性

  • 标记为 public 的属性可由对象实例访问

  class Car {
    // Public property
    public String color;


// Public constructor public Car(String color){ this.color = color; } }

    public class Main {

      // main method
      public static void main(String[] args) {
          Car myCar = new Car("brown");
          // Can access public members 
          // from object instance
          System.out.println(
            myCar.color); // Brown
        }
      }

Java 面向对象编程入门

私有属性

  • 标记为 private 的属性可由对象实例访问
  • 标记为 private 的属性仅能在类内使用

  // Car class
  class Car {
     public String color;

// Private properties private String model;
public Car(String color){ this.color = color; } }

    // Main class
    public class Main {
      // main method
      public static void main(String[] args) {
          Car myCar = new Car("brown");
          // Calling private properties causes errors        
          System.out.println(
            myCar.model); // Java compilation error
        }
      }


Java 面向对象编程入门

公共方法


  // Car class
  class Car {
      public String color;
      private String model;

      public Car(String color){
          this.color = color;
      }

      // Public method
      public String getModel(){
          return this.model;
      }    
  }    

Java 面向对象编程入门

私有方法


  class Car {


// Private method, "calculateSpeed" can only be used within "Car" class private calculateSpeed(){ // Trademarked formula code } public int getSpeed(){ // "calculateSpeed" can be used anywhere within "Car" class return this.calculateSpeed(); } }
Java 面向对象编程入门

静态方法

  • 标记为 static 的属性可在无实例时访问
  • 常用于存放共享代码/库

   // Formula class 
   static class Formula {

     // Method for calculating square
     static int getSquare(int number) {
        return number * number;
      }
   }





  // Main class 
  public class Main {

    public static void 
      main(String[] args) {
          // 可在无对象实例时使用 "getSquare"
        System.out.println(
          Formula.getSquare(5)); // 25
      }
  }
Java 面向对象编程入门

小结

  • 访问修饰符:publicprivatestatic
  • 访问修饰符有助于保护应用
  • static 允许无需创建实例即可使用类
Java 面向对象编程入门

Passons à la pratique !

Java 面向对象编程入门

Preparing Video For Download...