c#和Java中的繼承

来源:https://www.cnblogs.com/qicao/archive/2018/04/14/8835601.html
-Advertisement-
Play Games

c#和Java: 1.首先,子類繼承了父類的屬性和方法,但是子類並沒有繼承父類的私有欄位。 2.子類並沒有繼承父類的構造函數,但是。子類會預設的調用父類無參數的構造函數,創建父類對象,讓子類可以使用父類中的成員。 所以,如果在父類中重新寫了一個有參數的構造函數之後,那個無參數的就被幹掉了,子類就調用 ...


c#和Java:

    1.首先,子類繼承了父類的屬性和方法,但是子類並沒有繼承父類的私有欄位。

    2.子類並沒有繼承父類的構造函數,但是。子類會預設的調用父類無參數的構造函數,創建父類對象,讓子類可以使用父類中的成員。

所以,如果在父類中重新寫了一個有參數的構造函數之後,那個無參數的就被幹掉了,子類就調用不到了,所以子類會報錯。

 

解決辦法(c#):

1)、在父類中重新寫一個無參數的構造函數。

2)、在子類中顯示的調用父類的構造函數,使用關鍵字:base()

    public class Person
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        public Person(string name, int age, char gender)
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
        }
    }
    public class Reporter : Person
    {
        public Reporter(string name, int age, char gender, string hobby)
            : base(name, age, gender)
        {
            this.Hobby = hobby;
        }
        private string _hobby;
        public string Hobby
        {
            get { return _hobby; }
            set { _hobby = value; }
        }
        public void ReporterSayHello()
        {
            Console.WriteLine("我叫{0},我是一名狗仔,我的愛好是{1},我是{2}生,我今年{3}歲了",this.Name,this.Hobby,this.Gender,this.Age);
        }
    }

在Java中:有必要介紹一下super關鍵字:

super關鍵字代表了父類空間的引用。

super關鍵字的作用:
1. 子父類存在著同名的成員時,在子類中預設是訪問子類的成員,可以通過super關鍵字指定訪問父類的成員。
2. 創建子類對象時,預設會先調用父類無參的構造方法,可以通過super關鍵字指定調用父類的構造方法。

super關鍵字調用父類構造方法要註意的事項:
1. 如果在子類的構造方法上沒有指定調用父類的構造方法,那麼java編譯器會在子類的構造方法上面加上super()語句。
2. super關鍵字調用父類的構造函數時,該語句必須要是子類構造函數中的第一個語句。
3. super與this關鍵字不能同時出現在同一個構造函數中調用其他的構造函數。因為兩個語句都需要第一個語句。


super關鍵字與this關鍵字的區別:
1. 代表的事物不一致。
1. super關鍵字代表的是父類空間的引用。    
2. this關鍵字代表的是所屬函數的調用者對象。
2. 使用前提不一致。
1. super關鍵字必須要有繼承關係才能使用。
2. this關鍵字不需要存在繼承關係也可使用。
3. 調用構造函數的區別:
1. super關鍵字是調用父類的構造函數。
2. this關鍵字是調用本類的構造函數。
 1 class Fu{
 2     int x = 10;
 3     String name;
 4     public Fu(){
 5         System.out.println("Fu類無參的構造方法..");
 6     }
 7     public Fu(String name){
 8         this.name = name;
 9         System.out.println("Fu類帶參的構造方法..");
10     }
11     public void eat(){
12         System.out.println("小頭爸爸吃番薯..");
13     }
14 }
15 class Zi extends Fu{
16     int x = 20; 
17     int num;
18     public Zi(String name,int num){
19         super(name); //指定調用了父類帶參的 構造方法...
20         this(); // 調用本類無參構造方法..
21         //super(); //指定調用了父類無參構造方法。。。
22         System.out.println("Zi類帶參的構造方法..");
23     }
24     public Zi(){
25         System.out.println("Zi類無參的構造方法..");
26     }
27     public void print(){
28         System.out.println("x = " +super.x);
29     }
30     public void eat(){
31         System.out.println("大頭兒子吃龍蝦..");
32     }
33 }
34 
35 class Demo{
36     public static void main(String[] args) 
37     {
38         Zi z = new Zi("狗娃");
39     
40     }
41 }

3.繼承的特性  繼承的單根性:一個子類只能有一個父類    繼承的傳遞性

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、什麼是JMS? JMS即Java消息服務(Java Message Service)應用程式介面,是一個Java平臺中關於面向消息中間件(Message Oriented MiddleWare)的API,用於在兩個應用程式之間,或分散式系統中發送消息,進行非同步通信。Java消息服務是一個與具體平 ...
  • EL Express Language 表達式語言 就是把<% 這裡可以寫java語言 %> 這種jsp的寫法簡化變為${ }的方式 例如 action="${pageContext.request.contextPath }/login" JSTL 是JSP Standard Tag Librar ...
  • 閱讀目錄 方法重載 方法重寫 閱讀目錄 閱讀目錄 方法重載 方法重寫 方法重載 方法重寫 一、方法重載 1)在同一個類中,如果想創建多個名稱相同的方法,那麼就會用到方法重載。方法重載通過參數區分名稱相同的方法,參數可以類型不同,數目不同,或者順序不同 package com.example; pub ...
  • 多態、內部類 ...
  • 1.數據類型 1.1數字 整型int,如2 浮點型float,如3.14和314E-2 複數complex,如(-5+4) 1.2布爾值 真或假 1或0 1.3字元串 'hello world' 2.數據運算 3.三元運算 1 result = 值1 if 條件 else 值2 如果條件為真:res ...
  • 1如果如圖所示使用多重繼承,我們將看到什麼 2我們看到了基類被執行了兩次Baseclass 3代碼驗證吧 4改進措施 5完美解決=基類執行了一次 6代碼驗證 參考:本文參考學習《Python3 Object Oriented Programming》,根據自己理解改編,Dusty Phillips ...
  • 完成九宮格程式 在井字型的格局中(奇數格局),放入數字,使得每行每列以及斜對角線的和都相等 經驗規則:從1開始按順序逐個填寫,1放在第一行的中間位置,下一個數往右上角45度 處填寫。如果單邊越界則按頭尾相接地填;如果有衝突,則填在剛纔位置的底下一格 如果雙邊越界,則填在剛纔位置的底下一格。 ...
  • You are given n points on a plane. All the points are distinct and no three of them lie on the same line. Find the number of parallelograms with the v ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...