把困難踩在腳下

          迎難而上

           

          java--面向對象

          java最重要的特征就是面向對象思想,面向對象三大體現是封裝、繼承、多態。
          1.封裝:把所有具有共性屬性的對象封裝成一個類,這個類中包括他們共有的屬性和功能,使用者不需要知道這些功能是怎樣實現的,只需要知道怎樣用這些功能。就好比如一臺電視機對于使用者來說,絕大部分人不知道電視機內部是怎么工作的,但是幾乎每個人都會用,這就是封裝。下面看一個程序:
          package com.dr.test3;
          class Per{
           private String name;
           private int age;
           public String getName() {
            return name;
           }
           public void setName(String name) {
            this.name = name;
           }
           public int getAge() {
            return age;
           }
           public void setAge(int age) {
            this.age = age;
           }
           public void eat(){
            System.out.println(name+"正在吃飯***");
           }
           public void sleep(){
            System.out.println(name+"正在睡覺***");
           }
          }
          public class Demo02 {
                 public static void main(String args[]){
                  Per p1=new Per();
                  Per p2=new Per();
                  p1.setName("張三");
                  p1.setAge(20);
                  p2.setName("李四");
                  p2.setAge(21);
                  p1.eat();
                  p2.sleep();
                 }
          }
          程序運行結果是:
          張三正在吃飯***
          李四正在睡覺***
          在這個程序新建了一個Per類,在Per類中有兩個屬性name和age,有兩個方法sleep和eat方法。又新建了一個測試類Demo02,在這個類中我們只調用sleep和eat這兩個方法,但我們并不知道它是怎樣實現的。這就是封裝。
          2.繼承:一個孩子身上的優點可以說是繼承了其父親和母親的優點,但并不是他父母所有的優點這個孩子都繼承了,并且這個孩子還有可能有其父母沒有的優點。java類也是這樣,子類可以繼承父類的非私有的方法和屬性,并且還可以擁有自己獨特的屬性和方法。下面看程序:
          package com.dr.test4;
          class A{
           public String name;
           public int age;
           public void fun(){
            System.out.println("玩***");
           }
          }
          class B extends A{
            String school;
            void fun1(){
            System.out.println("好好玩***");
           }
          }
          public class Demo01{
           public static void main(String args[]){
           B p1=new B();
           p1.name="張三";
           p1.age=20;
           p1.school="南京大學";
           p1.fun();
           p1.fun1();
           
           }
          }
          程序運行結果是:
          玩***
          好好玩***
          在這個程序新建一個A類,A類中有兩個聲明public的屬性name和age,又一個聲明public的方法fun()。新建一個繼承A類的B類,那么B類就會繼承A類中的name、age屬性和fun()方法。如果將A類中的屬性聲明為private就會出現編譯錯誤,錯誤提示為‘屬性不可見’,如果fun()方法聲明為private也會提示‘方法不可見’。在B類中,又有自己的school屬性和fun1()方法。
          3.多態:多態主要體現在方法的重載和方法的復寫。
          重載就是同一個類中又好多方法,這些方法名字相同但列表參數(數據類型和參數個數)不同,這就是方法的重載。
          看下面程序:
          package com.dr.test4;
          class YuanGong{
           String name;
           int age;
           float salary;
           String depart;
           public String getName() {
            return name;
           }
           public void setName(String name) {
            this.name = name;
           }
           public int getAge() {
            return age;
           }
           public void setAge(int age) {
            this.age = age;
           }
           public float getSalary() {
            return salary;
           }
           public void setSalary(float salary) {
            this.salary = salary;
           }
           public String getDepart() {
            return depart;
           }
           public void setDepart(String depart) {
            this.depart = depart;
           }
           public YuanGong(String name,int age){
                this.setName(name);
                this.setAge(age);
                this.setSalary(1000);
                this.setDepart("后勤");
           }
           public YuanGong(String name,int age,float salary,String depart){
             this.setName(name);
             this.setAge(age);
             this.setSalary(salary);
             this.setDepart(depart);
           }
           public void print(){
             System.out.println("姓名:"+'\n'+name+'\n'+"年齡:"+'\n'+
               age+'\n'+"薪水:"+'\n'+salary+'\n'+"部門:"+'\n'+depart);
           }
          }
          public class Demo02 {
               public static void main(String args[]){
                YuanGong a=new YuanGong("張三",20);
                YuanGong b=new YuanGong("李四",21,2000,"技術");
                a.print();
                b.print();
               }
          }
          程序運行結果是:
          姓名:
          張三
          年齡:
          20
          薪水:
          1000.0
          部門:
          后勤
          姓名:
          李四
          年齡:
          21
          薪水:
          2000.0
          部門:
          技術
          上面程序新建一個YuanGong類,類中定義了兩個構造函數YuanGong,但兩者的列表參數不同。在測試類Demo02中建立兩個YuanGong對象a和b,a對象使用兩參的進行初始化,b對象使用四參的進行初始化。
          復寫就是子類和父類又同名的方法并且列表參數也相同,那么子類對象調用這個方法時就會復寫或是隱藏父類的方法。下面看程序:
          package com.dr.test4;
          class A{
           public String name;
           public int age;
           public void fun(){
            System.out.println("父類中方法***");
           }
          }
          class B extends A{
            String school;
            public void fun(){
             System.out.println("子類中的方法***");
            }
          }
          public class Demo01{
           public static void main(String args[]){
           B p1=new B();
           p1.name="張三";
           p1.age=20;
           p1.school="南京大學";
           p1.fun();
           }
          }
          程序運行結果為:
          子類中的方法***
          此程序中父類A和子類B中又同名的方法fun(),B類對象p1調用fun()方法時就會覆蓋A類中的fun()方法,而去調用自己本身的fun()方法。

           

                                                   

          posted on 2010-10-18 11:44 馮魁 閱讀(92) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學習網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 柳林县| 马边| 城市| 威远县| 绩溪县| 田东县| 丹棱县| 洛宁县| 十堰市| 蒲城县| 台东县| 勐海县| 平远县| 龙泉市| 铜山县| 卓尼县| 玉龙| 驻马店市| 天津市| 嵩明县| 杭锦后旗| 灌阳县| 台东县| 洪湖市| 玉溪市| 顺平县| 台前县| 南部县| 通渭县| 万载县| 曲阜市| 玛曲县| 延长县| 科尔| 库尔勒市| 南宫市| 二手房| 简阳市| 蕉岭县| 来安县| 鄂尔多斯市|