锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
聽(tīng)class Shap {
聽(tīng)void draw(){
聽(tīng)聽(tīng)System.out.println("Shap.draw()");
聽(tīng)}
聽(tīng)void erase(){
聽(tīng)聽(tīng)System.out.println("Shap.erase()");
聽(tīng)}
聽(tīng)
}
class Circle extends Shap{
聽(tīng)void draw(){
聽(tīng)聽(tīng)System.out.println("Circle.draw()");
聽(tīng)}
聽(tīng)void erase(){
聽(tīng)聽(tīng)System.out.println("Circle.erase()");
聽(tīng)}
}
聽(tīng)
class Square extends Shap{
聽(tīng)void draw(){
聽(tīng)聽(tīng)System.out.println("Square.draw()");
聽(tīng)}
聽(tīng)void erase(){
聽(tīng)聽(tīng)System.out.println("Square.erase()");
聽(tīng)}
}
public class Picture{
聽(tīng)void add(Shap s){
聽(tīng)聽(tīng)s.draw();
聽(tīng)}
聽(tīng)public static void main(String[] args) {
聽(tīng)聽(tīng)Picture p=new Picture();
聽(tīng)聽(tīng)Shap[] e={
聽(tīng)聽(tīng)聽(tīng)聽(tīng)new Circle(),
聽(tīng)聽(tīng)聽(tīng)聽(tīng)new Square()
聽(tīng)聽(tīng)};
聽(tīng)聽(tīng)for(int i=0;i<e.length;i++)
聽(tīng)聽(tīng)p.add(e[i]);
聽(tīng)}
聽(tīng)
}
娉ㄦ剰鐪嬩笂闈㈠姞綰㈣壊鐨勮鍙ワ紝鍙?qiáng)void add(Shap s){s.draw();}榪欒〃紺轟竴涓狿icture綾葷殑涓涓柟娉曡浣跨敤Shap綾諱綔涓哄艦寮忓弬鏁板茍璋冪敤璇ュ弬鏁扮殑draw()鏂規(guī)硶銆傛垜浠湪鎺ヤ笅鏉ョ殑璇彞涓湅鍒幫紝涓嶇浣犵殑Shap綾葷殑瀛愮被鏄疌ircle榪樻槸Square錛屽湪浼犻掔粰鏂規(guī)硶add()鍚庯紝add()鑳借嚜鍔ㄥ垽鏂槸璋冪敤Circle鐨刣raw錛堬級(jí)鏂規(guī)硶榪樻槸Square鐨刣raw()鏂規(guī)硶銆侸AVA榪欑鈥滃悗鏈熺粦瀹氣濈殑鏈灝卞彨鍋氬鎬併傚彲浠ョ湅鍑猴紝浣犱笉蹇呬笓闂ㄤ負(fù)Circle綾誨啓涓涓猘dd()鏂規(guī)硶錛屽啀涓篠quare鍐欎竴涓猘dd錛堬級(jí)鏂規(guī)硶錛屽彧闇瑕佷負(fù)瀹冧滑鐨勫熀綾誨啓涓涓柟娉曪紝鍓╀笅鐨勭紪璇戝櫒灝辮兘涓轟綘鑷姩閫夋嫨浣犳兂瑕佽皟鐢ㄧ殑姝g‘鐨勬柟娉曘傚鏋滃鎬佷粎浠呮槸涓縐嶁滃悜涓婅漿鍨嬧濈殑褰㈠紡鐨勮瘽錛屾垜浠緱鍒扮殑浠呬粎鏄妭鐪佷簡(jiǎn)涓鐐逛唬鐮佺殑璇濓紝涔熻鎴戜滑涓嶅繀瑕佺粰浜堝お澶氱殑鍏蟲敞錛岄偅澶氭佸埌搴曟湁浠涔堝叾瀹冨ソ澶勫憿錛熷湪涓婇潰鐨勪緥瀛愪腑鏂板姞涓涓狶ine綾伙紝瀹冧篃緇ф壙浜?jiǎn)Shap綾伙紝濡備笅鎵紺猴細(xì)
聽(tīng)class Shap {
聽(tīng)void draw(){
聽(tīng)聽(tīng)System.out.println("Shap.draw()");
聽(tīng)}
聽(tīng)void erase(){
聽(tīng)聽(tīng)System.out.println("Shap.erase()");
聽(tīng)}
聽(tīng)
}
class Circle extends Shap{
聽(tīng)void draw(){
聽(tīng)聽(tīng)System.out.println("Circle.draw()");
聽(tīng)}
聽(tīng)void erase(){
聽(tīng)聽(tīng)System.out.println("Circle.erase()");
聽(tīng)}
}
聽(tīng)
class Square extends Shap{
聽(tīng)void draw(){
聽(tīng)聽(tīng)System.out.println("Square.draw()");
聽(tīng)}
聽(tīng)void erase(){
聽(tīng)聽(tīng)System.out.println("Square.erase()");
聽(tīng)}
}
class聽(tīng)Line extends Shap{
聽(tīng)void draw(){
聽(tīng)聽(tīng)System.out.println("Line.draw()");
聽(tīng)}
聽(tīng)void erase(){
聽(tīng)聽(tīng)System.out.println("Line.erase()");
聽(tīng)}
}
public class Picture{
聽(tīng)void add(Shap s){
聽(tīng)聽(tīng)s.draw();
聽(tīng)}
聽(tīng)public static void main(String[] args) {
聽(tīng)聽(tīng)Picture p=new Picture();
聽(tīng)聽(tīng)Shap[] e={
聽(tīng)聽(tīng)聽(tīng)聽(tīng)new Circle(),
聽(tīng)聽(tīng)聽(tīng)聽(tīng)new Square(),
聽(tīng)聽(tīng)聽(tīng) new Line()
聽(tīng)聽(tīng)};
聽(tīng)聽(tīng)for(int i=0;i<e.length;i++)
聽(tīng)聽(tīng)p.add(e[i]);
聽(tīng)}
聽(tīng)
}
鍙互鐪嬪嚭add()鏂規(guī)硶鏍規(guī)湰涓嶅繀瑕佺煡閬撴湁鏂扮被鐨勫鍔犺岀戶緇甯稿伐浣溿傚拫鐪嬶紝榪欏彧涓嶈繃榪樻槸鑺傜渷浜?jiǎn)鍑犺浠g爜鐨勯棶棰樺Q屼綘鍙互涓烘瘡涓瓙綾婚兘鍐欎竴涓猘dd()鏂規(guī)硶錛屽悓鏍瘋兘瑙e喅闂銆傛湁鏂扮被鐨勫姞鍏ユ椂鍐嶄負(fù)榪欎釜鏂扮被鍐檃dd()鏂規(guī)硶銆傝繖涓嶄粎浠呮槸鑺傜渷浜?jiǎn)鍑犺浠g爜锛屽鏁插嚑琛屼唬鐮侐q朵笉浼?xì)濡備綍鎻愰珮缂栫爜鐨勬晥鐜囥傝繖鏄竴涓濇兂錛屼綘鏍規(guī)湰涓嶇敤鍏沖績(jī)鍩虹被浠婂ぉ澶氫簡(jiǎn)涓涓瓙綾伙紝鏄庡ぉ鍙堝浜?jiǎn)涓涓瓙綾伙紝涓嶇敤鎷呭績(jī)鐨勪綘鐨勪唬鐮佷腑錛屽浜庢柊鍔犲叆鐨勫瓙綾昏兘鍚︽甯哥殑榪愯錛屽洜涓轟綘鐩存帴涓庡熀綾葷殑鎺ュ彛榪涜閫氫俊錛岄伩鍏嶄簡(jiǎn)澶嶆潅鎬с傛崲鍙ヨ瘽璇達(dá)紝浣犵殑浠g爜鍏鋒湁寰堝ソ鐨勫彲鎵╁睍鎬э紝鍩虹被鍙互闅忔椂鏍規(guī)嵁闇瑕佽繘琛屾墿灞曡屼笉鐢ㄦ媴蹇?jī)浠g爜鐨剺q愯闂銆?/p>