国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

黑馬程序員系列第六篇面向對象基礎

2019-11-14 15:02:58
字體:
來源:轉載
供稿:網友

asp.net+Android+IOS開發  、Net培訓、期待與您交流!

 

(前言:本篇文章主要依據畢向東老師的課程視頻整理而成,如要詳細學習,請觀看畢老師視頻  百度網盤鏈接地址:http://pan.baidu.com/s/1mgngVl2)

 

目錄:1、面向對象三大特性    2、類和對象    3、內部類  

 

1、面向對象三大特性    封裝、繼承、多態

封裝

  概念:是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。 

  好處:將變化隔離;便于使用;提高重用性;安全性。 

  封裝原則:將不需要對外提供的內容都隱藏起來,把屬性都隱藏,提供公共方法對其訪問。  

繼承

  好處:子類將得到基類中的所有域和方法,提高了代碼的復用性;讓類與類之間產生了關系,提供了另一個特征多態的前提。

多態

簡單例子:父類引用或者接口的引用指向了自己的子類對象。//Animal a = new Cat(); 

多態的好處:提高了程序的擴展性。 

多態的弊端:當父類引用指向子類對象時,雖然提高了擴展性,但是只能訪問父類中具備的方法,不可以訪問子類中特有的方法。(前期不能使用后期產生的功能,即訪問的局限性) 

多態的前提: 1:必須要有關系,比如繼承、或者實現。    2:通常會有覆蓋操作。  

 

關于基于繼承的多態的一個代碼示例

 1 /* 2 對象的多態性:動物 x = new 貓(); 3 函數的多態性:函數重載、重寫 4  5 1、多態的體現 6         父類的引用指向了自己的子類對象 7         父類的引用也可以接收自己的對象 8 2、多態的前提 9         必須是類與類之間只有關系,要么繼承或實現10         通常還有一個前提,存在覆蓋11 3、多態的好處12         多態的出現大大的提高了程序的擴展性13 4、多態的弊端14         只能使用父類的引用訪問父類的成員15 5、多態的應用16 17 6、注意事項18 */19 20 /*21 需求:22 貓,狗。23 */24 25 abstract class Animal26 {27     abstract void eat();28 }29 30 class Cat extends Animal31 {32     public void eat()33     {34         System.out.);35     }36     public void catchMouse()37     {38         System.out.println("抓老鼠");39     }40 }41 42 class Dog extends Animal43 {44     public void eat()45     {46         System.out.println("吃骨頭");47     }48     public void kanJia()49     {50         System.out.println("看家");51     }52 }53 54 class DuoTaiDemo55 {56     public static void main(String[] args)57     {58         function(new Cat());59         function(new Dog());60         61         Animal a = new Cat();//向上轉型62         a.eat();63         64         Cat c = (Cat)a;//向下轉型65         c.catchMouse();66         67         68     }69     70     public static void function(Animal a)71     {72         a.eat();73         //用于子類型有限74         //或判斷所屬類型進而使用其特有方法75         if(a instanceof Cat)76         {77             Cat c = (Cat)a;78             c.catchMouse();79         }80         else if(a instanceof Dog)81         {82             Dog c = (Dog)a;83             c.kanJia();84         }85     }86     87     88 }    

 

2、類和對象  

類 :一個類可以被定義為描述行為的模板/藍色印花/指出其類型支持的對象。

對象 :對象具有狀態和行為。例如:狗有狀態 - 顏色,名稱,繁殖以及行為,搖頭晃腦,吠叫,吃。對象是類的實例。

從類創建對象時有三個步驟:

     1、聲明:  變量聲明,一個變量名的對象類型。

     2、實例: “new”關鍵字是用來創建對象。

     3、初始化:  關鍵字 new 后跟調用一個構造函數。這個調用初始化新的對象。

 

關于構建類的一個簡單例子:

 1 public class Employee{ 2    String name; 3    int age; 4    String designation; 5    double salary; 6      7    // This is the constructor of the class Employee 8    public Employee(String name){ 9       this.name = name;10    }11    // Assign the age of the Employee  to the variable age.12    public void empAge(int empAge){13       age =  empAge;14    }15    /* Assign the designation to the variable designation.*/16    public void empDesignation(String empDesig){17       designation = empDesig;18    }19    /* Assign the salary to the variable    salary.*/20    public void empSalary(double empSalary){21       salary = empSalary;22    }23    /* Print the Employee details */24    public void printEmployee(){25       System.out.println("Name:"+ name );26       System.out.println("Age:" + age );27       System.out.println("Designation:" + designation );28       System.out.println("Salary:" + salary);29    }30 }

 

 

3、內部類  

 定義:將一個類的定義放在另一個類的定義內部。

規則:內部類的創建和普通類沒區別;

內部類可以直接訪問所屬外部類中的成員(包括私有的)

訪問格式:外部類名.this.成員名,成員名不沖突是可直接用成員名調用,所屬的外部類要訪問內部類必須要建立內部類對象。

局部內部類:1、不可以被成員修飾符修飾   2、可以直接訪問外部類的成員,因為還只持有外部類的引用,在所在的局部中只能訪問它所在的局部中的用final修飾的變量。

匿名內部類(其實就是內部類的一種簡寫格式):定義匿名內部類的前提----內部類必須是繼承一個類或者實現接口;

格式:new 父類名字(){子類實現的內容};

 

幾種內部類的代碼演示:

 1     public static void main(String[] args) { 2         //創建非靜態內部類的對象 3         Test.TestInner tt=new Test().new TestInner(); 4         tt.show1(); 5         tt.show(); 6         tt.show2(); 7         //創建靜態內部類的對象 8         Test.Test1Inner tt1=new Test.Test1Inner(); 9         tt1.show();10         //直接調用靜態內部類中的靜態方法11         Test.Test1Inner.show1();12         13         Test tn=new Test();14         tn.show();//驗證局部內部類15         tn.show1();//驗證匿名內部類16     }17 18 }19 class Test{20     int a=1;21     public void show(){22         final int  a=90;23         System.out.println("Test show a:"+a);24         new TestInner().show();//外部類非靜態方法訪問非靜態內部類中的方法25         //局部內部類,調用方法中的局部變量要被final修飾26         class MethodClass{27             public void show1(){28                  System.out.println("Test show1 MethodClass show1 a:"+a);29             }30         }31         new MethodClass().show1();32     }33     public void show1(){34         //匿名內部類,直接在對象后使用其重寫的方法,調用方法中的局部變量要被final修飾35         final int a=80;36         new Test2(){37             @Override38             public void show() {39                 System.out.println("大家好,這里是Test類中的show1方法中繼承了Test2抽象類的匿名內部類..."+a);40             }41             42         }.show();43     }44     //普通內部類45     class TestInner{46         int a=2;47         public void show(){48             System.out.println("TestInner show a:"+a);49         }50         public void show1(){51             System.out.println("Test TestInner show1----:");52             Test.this.show();//非靜態內部類訪問所屬外部類的非靜態方法53         }    54         public void show2(){55             System.out.println("Test TestInner show2----:");56             new Test.Test1Inner().show();//非靜態內部類訪問所屬外部類的靜態類的方法57         }58     }59     //靜態內部類60     static class Test1Inner{61          static int a=9;62          public void show(){63            new Test().new TestInner().show();//靜態內部類調用非靜態內部類中的方法64          }65          public static void show1(){66              System.out.println("Test Test1Inner show1 a:"+a);67          }68     }69 }70 abstract class Test2{71     public abstract void show();72 }

 

 

 

       初學者難免錯誤,歡迎評判指教,持續更正ing...........

 

ASP.Net+Android+IOS開發  、Net培訓、期待與您交流!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 佛坪县| 磐石市| 嘉禾县| 东至县| 科尔| 日照市| 额敏县| 诸暨市| 阳新县| 酒泉市| 佛学| 交城县| 肃宁县| 外汇| 长子县| 乌鲁木齐县| 金湖县| 抚顺县| 漳浦县| 芮城县| 合肥市| 阿坝县| 友谊县| 营山县| 郸城县| 大埔区| 绥芬河市| 神木县| 岐山县| 昭通市| 图木舒克市| 万载县| 莱州市| 阳高县| 醴陵市| 承德县| 崇左市| 手游| 福海县| 德保县| 比如县|