Java語言的三大特性即是:封裝、繼承、多態
首先先簡單的說一下其3大特性的定義:
封裝:隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別。將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過外部接口,一特定的訪問權限來使用類的成員。封裝的基本要求是: 把所有的屬性私有化,對每個屬性提供getter和setter方法,如果有一個帶參的構造函數的話,那一定要寫一個不帶參的構造函數。在開發的時候經常要對已經編寫的類進行測試,所以在有的時候還有重寫toString方法,但這不是必須的。
繼承:通過繼承實現代碼復用。Java中所有的類都是通過直接或間接地繼承java.lang.Object類得到的。繼承而得到的類稱為子類,被繼承的類稱為父類。子類不能繼承父類中訪問權限為private的成員變量和方法。子類可以重寫父類的方法,及命名與父類同名的成員變量。但Java不支持多重繼承,即一個類從多個超類派生的能力。在開發中盡量減少繼承關系,這樣做是為了把程序的耦合度降低。
多態:多態又分為設計時多態和運行時多態,例如重載又被稱為設計時多態,而對於覆蓋或繼承的方法,JAVA運行時系統根據調用該方法的實例的類型來決定選擇調用哪個方法則被稱為運行時多態。總而言之,面向對象的設計的典型特點就是繼承,封裝和多態,這些特點也是面向對象之所以能如此盛行的關鍵所在。
以上就是java三大特性的基本含義,大家理解一下就行了,千萬別背啊!接下來我們通過一個例子來完美的解釋一下java的3大特性。
用java做一個簡單計算器;
import java.io.*;
class OperationAttridute
{
private double numberA=0;
private double numberB=0;
private double result=0;
public double setNumberA(double i)
{
return numberA=i;
}
public double getNumberA()
{
return numberA;
}
public double setNumberB(double j)
{
return numberB=j;
}
public double getNumberB()
{
return numberB;
}
public double setResult(double z)
{
return result=z;
}
public double getResult(double a,double b)
{
return result;
}
}
//將要運算的2個數字和運算結果進行封裝。
class OperationA extends OperationAttridute
{
public double getResult(double a,double b)
{
double result=0;
result=a+b;
return result;
}
}
//加法類:繼承OperationAttridute類並且覆蓋其getResult方法
class OperationS extends OperationAttridute
{
public double getResult(double a,double b)
{
double result=0;
result=a-b;
return result;
}
}
//減法類:繼承OperationAttridute類並且覆蓋其getResult方法
class OperationM extends OperationAttridute
{
public double getResult(double a,double b)
{
double result=0;
result=a*b;
return result;
}
}
//乘法類:繼承OperationAttridute類並且覆蓋其getResult方法
class OperationD extends OperationAttridute
{
public double getResult(double a,double b)
{
double result=0;
if(b==0)
{
Throw new RuntimeException(“被除數不能為0”);
}
result=a/b;
return result;
}
}
//除法類:繼承OperationAttridute類並且覆蓋其getResult方法,除法要對被除數進行判斷並拋出異常
class Operationdo
{
public static Object expression_r(char r)
{
OperationAttridute oa=new OperationAttridute();
switch(r)
{
case '+':
oa=new OperationA();
break;
case '-':
oa=new OperationS();
break;
case '*':
oa=new OperationM();
break;
case '/':
oa=new OperationD();
break;
}
return oa;
}
}
//運算類:通過傳進來的參數,來調用運算方法
class Account
{
public static void main(String []args)throws Exception
{
char r='*';
OperationAttridute oa=(OperationAttridute)Operationdo.expression_r(r);
double a=oa.setNumberA(9);
double b=oa.setNumberB(2);
System.out.println(oa.getResult(a,b));
}
}
//主程序
這樣,只需要輸入運算符號,通過多態,返回父類的方式實現了計算器的結果。
通過以上的例子,我相信大家應該對java的特性有一個清醒的認識了。編程是一門藝術,只有深刻理解其思想才能創造出與眾不同的代碼,我一向認為,編碼能力是可以練出來的,但是編程思想是需要不斷的學習不斷的總結,這樣才能有質的飛躍!
大家共勉吧!