日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

面向抽象编程

發(fā)布時(shí)間:2025/4/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向抽象编程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/* * 面相抽象編程*使用對(duì)臺(tái)進(jìn)行編程的核心技術(shù)之是使用上轉(zhuǎn)型對(duì)象,即將abstract 類(lèi)生命對(duì)象作為一個(gè)子類(lèi)的上轉(zhuǎn)對(duì)象,那么這個(gè)上轉(zhuǎn)對(duì)象就可以調(diào)用子類(lèi)重的方法,*所謂面向抽象編程,是指設(shè)計(jì)一個(gè)類(lèi)時(shí),不讓該類(lèi)面向具體的類(lèi),而是面向一個(gè)抽象的類(lèi),即所設(shè)計(jì)類(lèi)中的重要數(shù)據(jù)是抽象類(lèi)聲明的對(duì)象,而不是具體類(lèi)聲明的對(duì)象。*/ //通過(guò)面向抽象來(lái)設(shè)計(jì)Pillar類(lèi),使得該類(lèi)不依賴(lài)具體類(lèi),因此每當(dāng)系統(tǒng)增加新的Geometry的子類(lèi)的時(shí)候,如增加一個(gè)Triangle子類(lèi),就不用再修改Pillar類(lèi)的任何代碼,就可以使用Pillar創(chuàng)建出具有三角形低的柱體 public abstract class Geometry {public abstract double getArea(); } public class Pillar{//設(shè)計(jì)一個(gè)類(lèi)使其面向一個(gè)抽象的類(lèi),而不是具體的類(lèi),Geometry bottom;//抽象類(lèi)Geometry聲明的對(duì)象(類(lèi)中的數(shù)據(jù)是抽象類(lèi)生命的對(duì)象)double height;Pillar (Geometry bottom,double height){this.bottom=bottom;this.height=height;}public double getVolume(){return bottom.getArea()*height;//bottom可以調(diào)用子類(lèi)重寫(xiě)的getArea()方法。} } //下列Circle和Rectangle 類(lèi)都是Gmometry的子類(lèi),二者都必須重寫(xiě)getArea()方法,來(lái)計(jì)算各自的面積 //Circle.java public class Circle extends Geometry{double r;Circle(int r){this.r=r;}public double getArea(){return 3.14*r*r;} } //Rectangle.java public class Rectangle extends Geometey{double a,b;Rectangle(double a,double b){this.a=a;this.b=b;}public class getArea(){return a*b;} } //APPlication.java public class Application{public static void main(String[] args){Pillar pillar;Geometry bottom;bottom=new Rectangle(12,22);//上轉(zhuǎn)型對(duì)象pillar=new Pillar(bottom,58);//pillar是具有矩形底的柱體System.out.println("矩形體的主體體積"+pillar.getVolume());bottom=new Circle(10);pillar=new Pillar(bottom,58);System.out.println("圓形體的主體體積:"+pillar.getVolume());} }/*開(kāi)-閉原則* 就是讓設(shè)計(jì)的系統(tǒng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉* 本質(zhì)就是當(dāng)系統(tǒng)中增加模塊的時(shí)候,不需要修改現(xiàn)有的模塊。* 再設(shè)計(jì)系統(tǒng)時(shí),首先考慮到用戶(hù)需求的變化,將對(duì)用戶(hù)變化的部分設(shè)計(jì)為對(duì)擴(kuò)展開(kāi)放,而設(shè)計(jì)的核心部分是指經(jīng)過(guò)精心考慮之后確定的基本結(jié)構(gòu),這部分對(duì)修改是關(guān)閉的,既不能因?yàn)橛脩?hù)需求的變化而發(fā)生改變,因?yàn)檫@部分不是用來(lái)應(yīng)對(duì)需求變化的。* 如果系統(tǒng)遵守了開(kāi)-閉原則,那么系統(tǒng)一定是利于維護(hù)的。*/ //設(shè)計(jì)一格 動(dòng)物模擬器,希望設(shè)計(jì)的模擬器可以模擬很多動(dòng)物的聲音 //Animal.java public abstract class Animal{public abstract void cry();public abstract String getAnimalNmae(); } //Simulator.java public class Simulator{public void palySound(Animal animal){System.out.println("現(xiàn)在播放"+animal.getAnimalNmae()+"類(lèi)的聲音: ");animal.cry();} } //dog.java public class Dog extends Animal{public void cry(){System.out.println("wang...wang");}public String getAnimalName(){return "dog";} } //cat.java public class Cat extends Animal{public void cry(){System.out.println("meo..meo");}public String getAnimalName(){return "cat";} } public class Application{public static void main(String[] args){Simulator simulator=new Simulator();simulator.playSound(new Dog());simulator.playSound(new Cat());} }
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的面向抽象编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。