天天看點

Java面向對象程式設計四大特征(一)

Java面向對象程式設計四大特征

抽象性:抽出事物的本質特性,把某類事物的共同的特點描述出來;

封裝性:把對象的屬性和操作結合在一起,構成一個獨立的封裝體

繼承性:使得一個類可以繼承另一個類的屬性和方法

多态性:指不同類型的對象接收相同的消息時産生不同的行為

一、抽象

我們去定義一個類的時候,就是把一類事物的共有的屬性和行為提取出來,形成一個實體模型,這種研究問題的方法稱為抽象。

二、封裝

封裝就是把抽象出的資料和對資料的操作封裝在一起,資料被保護在内部,程式的其他部分隻有通過被授權的操作(成員方法),才能對資料進行操作。

代碼示例:

package com.xx.day8;
/**
 * @author 程式員小新兒
 *2020年4月6日
 */
//公司職員
  class Clerk{
    public String name;
    //private 私有的
    private int age;
    private float salary;
    //構造函數
    public Clerk(String name,int age,float salary) {
      this.name = name;
      this.age = age;
      this.salary = salary;
    }
    //通過一個成員方法去控制和通路私有的屬性
    /**
     * @return the salary
     */
    public float getSalary() {
      return salary;
    }
  }
public class EncapsulationTest {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    //建立一個職員
    Clerk clerk = new Clerk("小新" , 21 , 1234.5f);
    System.out.println("職員名字是" + clerk.name + ",薪水是" + clerk.getSalary());
  }
}
           

三、繼承

繼承可以解決代碼複用,當多個類存在相同的屬性(變量)和方法時,可以從這些類中抽象出父類,在父類中定義這些相同的屬性和方法,所有的子類不需要重新定義這些屬性和方法,隻需要extends語句來聲明繼承父類:class 子類 extends 父類 這樣子類就會擁有父類定義的屬性和方法。(java是單繼承而c++可以多繼承)

代碼示例:

//國小生類
class Pupil{
  //定義成員屬性
  private String name;
  private int age;
  private float fee;
  //繳費 不打折
  public void pay(float fee) {
    this.fee = fee;
  }
}
//中學生類
class MiddleStudent{
  //定義成員屬性
    private String name;
    private int age;
    private float fee;
    //繳費 打八折
    public void pay(float fee) {
      this.fee = fee * 0.8f;
    }
}
//大學生類
class CollegeStudent{
  //定義成員屬性
      private String name;
      private int age;
      private float fee;
      //繳費 打一折
      public void pay(float fee) {
        this.fee = fee * 0.1f;
      }
}
           

代碼改造:

//将學生的共有屬性提取出來做一個父類
class Student{
  //定義成員屬性
  public String name;
  public int age;
  public float fee;
}

//國小生類
class Pupil extends Student{
  //繳費
  public void pay(float fee) {
    this.fee = fee;
  }
}
//中學生類
class MiddleStudent extends Student{
    //繳費 打八折
    public void pay(float fee) {
      this.fee = fee * 0.8f;
    }
}
//大學生類
class CollegeStudent extends Student{
      //繳費 打一折
      public void pay(float fee) {
        this.fee = fee * 0.1f;
      }
}
           

程式設計中,如果你不希望子類繼承某個屬性或者方法則将其聲明為private。

點我進入公衆号看原創連結

微信掃描下方二維碼或微信公衆号搜尋【程式員小新兒】歡迎關注哦~

Java面向對象程式設計四大特征(一)