国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

在Java的繼承中,你是否有這樣的疑惑?

開發 前端
最近在寫代碼,有兩個屬性很相近的類,其中80%的屬性(字段)都是一樣的,剩下的才是各自不一樣的,在設計的時候,采用了繼承的方式,抽象除了一個父類,大概如下,

一、問題

最近在寫代碼,有兩個屬性很相近的類,其中80%的屬性(字段)都是一樣的,剩下的才是各自不一樣的,在設計的時候,采用了繼承的方式,抽象除了一個父類,大概如下,

有FirstChild和SecondChild兩個類,因為其中的屬性name、code等是相同的,為此抽出了一個父類BaseDO,如下:

package com.example.day01;

public class BaseDO {
private String name;
private String code;
private String field1;
private String field2;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getField1() {
return field1;
}

public void setField1(String field1) {
this.field1 = field1;
}

public String getField2() {
return field2;
}

public void setField2(String field2) {
this.field2 = field2;
}

@Override
public String toString() {
return "BaseDO{" +
"name='" + name + '\'' +
", code='" + code + '\'' +
", field1='" + field1 + '\'' +
", field2='" + field2 + '\'' +
'}';
}
}

FirstChild

package com.example.day01;

public class FirstChild extends BaseDO{
private String myField1;
private String myFiled2;

public String getMyField1() {
return myField1;
}

public void setMyField1(String myField1) {
this.myField1 = myField1;
}

public String getMyFiled2() {
return myFiled2;
}

public void setMyFiled2(String myFiled2) {
this.myFiled2 = myFiled2;
}

@Override
public String toString() {
return "FirstChild{" +
"myField1='" + myField1 + '\'' +
", myFiled2='" + myFiled2 + '\'' +
"} " + super.toString();
}
}

SecondChild

package com.example.day01;

public class SecondChild extends BaseDO{
private String secondField1;
private String secondField2;

public String getSecondField1() {
return secondField1;
}

public void setSecondField1(String secondField1) {
this.secondField1 = secondField1;
}

public String getSecondField2() {
return secondField2;
}

public void setSecondField2(String secondField2) {
this.secondField2 = secondField2;
}

@Override
public String toString() {
return "SecondChild{" +
"secondField1='" + secondField1 + '\'' +
", secondField2='" + secondField2 + '\'' +
"} " + super.toString();
}
}

從上面可以看到兩個子類除了含有父類的屬性外還有自己各自的屬性,現在有個需求是這樣的,要實例化這兩個子類。

二、如何解決

2.1、分別初始化

何為分別初始化,所謂分別初始化就是各自初始化自己的,為每個子類分別實現初始化其屬性的方法,如下

FirstChild fillFirstField(FirstChild firstChild){

firstChild.setName("apple");
firstChild.setCode("apple");
firstChild.setMyField1("first Child");

return firstChild;
}
SecondChild fillSecondField(SecondChild secondChild){

secondChild.setName("apple");
secondChild.setCode("apple");
secondChild.setSecondField1("second Child");
return secondChild;
}

這里作為演示對屬性沒有全部賦值,如果兩個子類相同的屬性比較多,那么賦值起來會比較麻煩,而且兩個方法的代碼重復度會很高。

2.2、抽象出一個公共的方法

既然,已經為兩個子類抽象出了公共的屬性,那么順著這個思路下去,也可以抽象出一個公共的方法為這些公共的屬性賦值,即為父類填充屬性,

BaseDO fillField(BaseDO baseDO){
baseDO.setName("apple");
baseDO.setCode("apple");
return baseDO;
}

好了,在進行子類初始化的時候已經有一個方法可以初始化其公共屬性,那么接下來的事情,就是初始化其自己的屬性即可,

下面就實例化FirstChild,然后初始化其公有屬性

FirstChild firstChild=new FirstChild();
fillField(firstChild);
firstChild.setMyField1("first Child");
System.out.println(firstChild);

打印出firstChild的結果如下

可以看到已經把公共屬性name、code和特意屬性myField1進行賦值,完成了上面的需求。

可能有些同學會使用下面的寫法,

可以看的該種寫法存在錯誤,提示我們需要的類型是FirstChild,但是我們提供的BaseDO,我們知道fillField方法返回的BaseDO類型,一個父類型的實例不可賦值給子類型的引用( 相反一個子類型的實例可以賦值給父類型,典型的多態 ),這怎么辦那,向下類型轉換,沒錯,如下

細心的小伙伴會問,那為什么fillField方法可以接受FirstChild的實例那,哈哈哈,前邊紅字提到了多態。

怎么樣,是不是對多態又有了更深的理解。

延申一點

從fillField方法來看,我們知道該方法可以不設返回值,為什么可以不設返回值,因為引用類型,不是傳值,可以理解為引用,哈哈,所以叫引用類型,在fillField方法中對其引用類型的參數進行了修改,那么在這個方法執行完了之后,引用這個參數的其他引用同樣可以感知到其修改,下面的寫法就是很好的佐證,

是不是又加深了引用和引用的對象間的關系,多說一句引用在jvm的內存模型中是在哪個區,引用指向的對象那?

三、總結

本文分析了在開發過程中,遇到公有屬性很多的多個實體類時的設計思路,抽出公有的父類,由父類承擔公有屬性。并且在進行屬性填充的時候,如果公有屬性的值是一樣的,那么可以抽出公共的方法進行屬性填充,這里又提到了多態。

  1. 抽出公有屬性;
  2. 對多態的理解;
  3. 向下類型轉換;
  4. 引用類型的傳遞;

最后,廣大讀者們,對于類似的需求,你們有更好的設計思路嗎,歡迎踴躍討論。


責任編輯:華軒 來源: 今日頭條
相關推薦

2013-09-09 11:28:35

2016-07-20 10:01:59

2020-08-04 07:49:41

Oracle數據庫

2013-04-07 10:17:54

WindowsPhon

2017-07-27 11:21:57

職場利器

2017-02-06 13:31:19

Android樣式繼承關系

2016-09-19 18:57:25

2022-09-26 07:32:24

開發接口編程

2011-05-12 11:01:26

HTML

2017-01-15 10:20:57

交通網絡

2021-08-03 22:26:46

Go函數分頁

2010-03-23 09:16:43

Python源碼剖析

2022-07-06 11:47:27

JAVAfor循環

2023-05-09 12:42:51

Java繼承多態

2022-05-09 08:37:43

IO模型Java

2021-03-20 22:00:00

FreeDOS開源

2024-10-09 07:59:10

C#接口信息

2020-02-20 10:45:57

代碼JS開發

2014-07-15 16:40:40

敏捷華為

2020-05-26 08:52:36

Java JVM多態
點贊
收藏

51CTO技術棧公眾號

欧美色倩网站大全免费| 国产日韩一区欧美| 黄色的网站在线观看| 国产亚洲一本大道中文在线| 欧美精品一区二区三区四区五区 | av大全在线| 精品久久中文字幕久久av| 国产一级做a爰片久久| 视频一区在线播放| 国产精品久久久久久久免费大片| 国产欧美久久一区二区三区| 色婷婷综合久久久久中文字幕1| 性爱视频在线播放| 5858s免费视频成人| 岛国视频免费在线观看| 五月婷婷久久丁香| 天堂中文字幕在线| 久久免费国产精品| 欧美日韩在线免费播放| 成人h动漫精品| 精品少妇一区二区三区在线| 国产高清不卡二三区| 一本色道久久88亚洲精品综合| 久久综合综合久久综合| 国产又黄又爽免费视频| 国产麻豆欧美日韩一区| 欧美中日韩在线| 99精品视频在线观看| 国产欧美日韩网站| 久久这里只精品最新地址| 麻豆av免费在线| 国产精品成人免费| 在线播放evaelfie极品| 色婷婷精品大视频在线蜜桃视频| 秋霞成人影院| 亚洲欧美成人一区二区在线电影| 欧美日韩国产网站| 欧美高清视频在线播放| 欧美精品一区二区三区中文字幕| 91九色视频导航| 亚洲清纯自拍| av动漫免费观看| 久久久久成人黄色影片| 偷偷要 色偷偷| 欧美一区二区性放荡片| 成人天堂yy6080亚洲高清| 欧美国产亚洲视频| 99视频精品全部免费在线视频| 精品中文字幕一区| 国产99久久精品| 黄色三级电影网站| 91精品国产综合久久福利软件| 日韩电影av| 国产精品扒开腿做爽爽爽视频| 国产欧美一区二区三区国产幕精品| 在线观看欧美亚洲| 国产视频一区不卡| 国产69精品久久app免费版| 亚洲精品国产品国语在线| 日韩不卡在线视频| 成人毛片网站| av不卡一区二区三区| 3dmax动漫人物在线看| 精品国产乱码久久久久久蜜臀 | 欧美伊人久久大香线蕉综合69| brazzers在线观看| 97国产成人精品视频| 亚洲精品一二| 中文字幕乱码人妻综合二区三区| 疯狂做受xxxx高潮欧美日本 | 6080午夜不卡| 亚洲热av色在线播放| 91视频8mav| 国产98色在线|日韩| 国模大尺度私拍在线视频| 日韩欧美一级精品久久| 精品福利一区| 国产精品中出一区二区三区| 99re热视频精品| 天堂地址在线www| 高清在线视频日韩欧美| 99国产精品99久久久久久粉嫩| 免费一级特黄毛片| 欧美色老头old∨ideo| 欧美片网站免费| 欧美另类视频在线| 亚洲视频免费观看| 国模冰冰炮一区二区| 亚洲自拍欧美色图| 国产亚洲一区二区三区四区| 日本在线看片免费人成视1000| 久久久久久伊人| 久久99精品视频| 国产视频二区在线观看| 久久乐国产精品| 国产麻豆午夜三级精品| 美州a亚洲一视本频v色道| 欧美激情免费在线| 国模大尺度一区二区三区| 毛片网站在线| 欧美一级淫片丝袜脚交| 99国内精品久久| 美女网站在线看| 久久亚洲精品欧美| 午夜久久电影网| 美女视频亚洲色图| 欧美精品色婷婷五月综合| 精品视频—区二区三区免费| 国产日韩一区二区三区在线播放| 美乳中文字幕| 久久久99免费视频| 久久精品久久综合| av片在线观看永久免费| 99蜜桃在线观看免费视频网站| 久久久国产精品不卡| 粉嫩一区二区| 日韩女优中文字幕| 欧洲国产伦久久久久久久| 要久久电视剧全集免费| 成人精品小视频| 久久久国产视频| 福利视频网站一区二区三区| 精品众筹模特私拍视频| 欧美在线播放一区二区| 欧美色播在线播放| 波多野结衣在线观看一区二区三区 | 国产麻豆成人精品| 黄a在线观看| 成人免费视频在线观看超级碰| 国产欧美日韩另类一区| 日韩av黄色| 全黄性性激高免费视频| 亚洲图片制服诱惑| 久久激五月天综合精品| 久草在线资源站资源站| 日韩影院一区| 亚洲第一天堂无码专区| 日韩国产在线一| 美女隐私在线观看| 欧美在线3区| 日韩亚洲欧美综合| 天堂成人免费av电影一区| 拍真实国产伦偷精品| 国产一区二区精品在线| 欧美日韩中文字幕精品| 日韩精品一级中文字幕精品视频免费观看| 日韩av中文| 亚洲午夜高清视频| 亚洲日本成人女熟在线观看| 国产成人亚洲精品青草天美| 亚洲www啪成人一区二区| 久久手机在线视频| 久久精品国产电影| 欧美国产日韩在线观看| 欧洲亚洲视频| 写真福利理论片在线播放| 亚洲一区中文字幕| 欧美男女性生活在线直播观看| 久久久亚洲人| 亚洲永久av| 九九视频精品在线观看| 日产日韩在线亚洲欧美| 欧美日韩在线视频一区| 久久一区视频| 欧美少妇激情| 中文字幕福利片| 精品综合久久| 亚洲系列中文字幕| 中文字幕欧美激情一区| 99久久精品费精品国产| jizz亚洲| 丁香花在线影院观看在线播放| 欧美激情中文网| 色噜噜狠狠色综合中国| 久色婷婷小香蕉久久| 日韩精品免费视频一区二区三区| 成人性生交大片免费看视频r| 91久久国产精品| 日韩国产欧美精品在线| 国产精品久久久久精k8| 黑人一区二区| 亚洲天堂1区| 三级国产三级在线| 亚洲 日韩 国产第一区| 国自产精品手机在线观看视频| 色婷婷av一区| 国产成人av电影在线| 激情婷婷综合| 欧美性受ⅹ╳╳╳黑人a性爽| 成人三级视频在线播放| 成人免费观看网址| 日韩国产中文字幕| 亚洲一区二区中文在线| 免费在线观看不卡| 国产精品一在线观看| 97蜜桃久久| 日本免费视频www| 一区二区三区免费看| 日韩免费观看在线观看| 日韩av在线网站|