1. 程式人生 > >為何在一個類中定義了帶引數的構造方法的時候,需要把無參構造方法定義一下

為何在一個類中定義了帶引數的構造方法的時候,需要把無參構造方法定義一下

class TestA
{
    public TestA(String s)
    {
        System.out.println("A");
        System.out.println(s);
    }
}


class TestB extends TestA
{
    public TestB()
    {
        System.out.println("B");
    }
}


public class Test
{
    public static void main(String args[])
    {
        TestB testB = new TestB();
    }

}

編譯上面的程式,看有什麼錯誤提示,如果沒有意外的話,會有下面的錯誤提示:

Test.java:8: 找不到符號
符號: 建構函式 TestA()
位置: 類 TestA
        public TestB(){
                      ^
1 錯誤

此錯誤是說,找不到TestA()建構函式,出現錯誤的原因就是:子類TestB會自動尋求呼叫父類TestA的無參建構函式,但是此時TestA中只有一個TestA(String s),只要在TestA中加上"public TestA(){}"即可,或者在TestB的建構函式中加上"super("xxx"),便不會呼叫TestA的無參建構函式而是呼叫TestA的有參建構函式。所以我們在一個類中定義了自己的帶引數的構造方法的時候,必須把無參建構函式定義一下。

相關推薦

為何在一個定義引數構造方法的時候需要構造方法定義一下

class TestA{    public TestA(String s)    {        System.out.println("A");        System.out.println(s);    }}class TestB extends TestA{ 

一位從vb系轉到JAVA的朋友在一個寫一個類似VBMSGBOX的方法

fin return gen interface man text string listener com //此方法放一個自定義的JAVA類中 public static boolean msgBoxPlus(Activity objPage, String strTi

extjs4.1 grid columns處理幾個小問題(第一:combobox 的store引數到後臺第二model資料是一個object)

第一個問題:combobox中的store可以通過帶引數來區分。 Ext.define("zyc.view.test.ComboboxStoreParam",{ extend:'Ext.panel.Panel', title : '測試

c++一個定義一個引數建構函式的的物件

c++中在一個類中定義另一個只有帶引數建構函式的類的物件,編譯通不過 class A {     public: A(int i){}     }; class B {     public: B(){}     private:    

宣告person該類定義兩個資料成員一個構造方法一個具有兩個引數構造方法一個方法prin()

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Con

java--建立一個預設構造方法(即構造)的構造方法列印一條訊息"Hello Constructor";再為這個新增一個過載構造方法令其接收一個字串引數將其一起打印出來

題目描述:建立一個帶預設構造方法(即無參構造)的類,在構造方法中列印一條訊息"Hello Constructor";再為這個類新增一個過載構造方法,令其接收一個字串引數,並在這個有參構造方法中把"Hello Constructor"和接收的引數一起打印出來。 //Person類 class Pe

java--建立一個預設構造方法(即構造)的構造方法列印一條訊息"Hello Constructor";再為這個新增一個過載構造方法令其接收一個字串引數將其一起打印出來

題目描述:建立一個帶預設構造方法(即無參構造)的類,在構造方法中列印一條訊息"Hello Constructor";再為這個類新增一個過載構造方法,令其接收一個字串引數,並在這個有參構造方法中把"Hello Constructor"和接收的引數一起打印出來。 //Perso

Java之建立一個預設構造方法(即構造)的構造方法列印一條訊息"Hello Constructor";再為這個新增一個過載構造方法令其接收一個字串引數

建立一個帶預設構造方法(即無參構造)的類,在構造方法中列印一條訊息"Hello Constructor";再為這個類新增一個過載構造方法,令其接收一個字串引數,並在這個有參構造方法中把"Hello Constructor"和接收的引數一起打印出來。 效果如下: 附上程

C++在一個定義一個引數建構函式的的物件

class A{public:      A( int i ){}};class B {public:      B():a(1){}   //或:B( int i ):a( i ){ }。對a提供引數一定要按                  //這種形式,在冒號後,不能在

Java反射機制demo(五)—獲得並調用一個方法

color 擁有 oca logs over super getmethod equals() bool 這個demo在使用反射機制操作屬性之前,主要原因是因為在.class文件字節碼中,方法排在屬性的前面。 1,獲得一個類中的方法 先看一下方法和運行結果。獲取所有的方

JavaSE8基礎 Class getDeclaredFields 獲取一個所有的成員變量

dsd scores ase sge 成員變量 demo 基礎 itcast 思考 禮悟: 好好學習多思考,尊師重道存感恩。葉見尋根三返一,活水清源藏於零。 虛懷若谷良心主,皓月當空自在王。願給最苦行無悔,誠勸且行且珍惜。

如何保證一個的實例變量不被改變

類型 可變 nal turn 改變 log 復制 實例變量 備份 如題,如果在一個對象中的實例屬性不能被改變,需要設置成不可變量的時候采用如下方法:1.將類定義成final類型 2.將實例變量定義成final類型 3.將實例變量的set方法去除 4.將在構造方法

Python3基礎 的實例化放到另外一個

intro 知識 res 轉變 load pycharm pyc nload charm ? python : 3.7.0 OS : Ubuntu 18.04.1 LTS

web工程啟動時一個延遲載入Bean因為該Bean可能還沒被JVM載入

   問題描述: (1)javaWeb專案啟動中,還沒啟動完成,在下面這個類載入另一個Bean類, (2)通過getBean方法獲取到該Bean,可以獲取到,不為null (3)但是,呼叫該Bean的方法insertSelective()方法,進不去該方法   &nb

Qt如何將訊息在2個沒有關係的一個傳送到另一個

條件: ①2個類直接沒有任何關係; ②接收訊息的類必須有一個全域性變數; ③ QMetaObject::invokeMethod((QObject*)全域性變數類, "接收的方法", Qt::AutoConnection, Q_ARG(接收的引數型別, 接收的引數)); cla

如何控制另一個的變數

// 這個是 一次次執行,只是達到了控制另一個類中的變數的目的,並沒有達到想要測試是否由於執行時間慢,還沒有執行到函式(需要依據這個變數(isCallBox) 做分類執行的目的)這個變數就又改變了,現在用定時函式測試,然後觀察----------如果會改變,需要考慮用鎖,是否會達到不改變的目的

c++一個同名的const成員函式與非const成員函式為什麼可以構成過載

#include<iostream> using namespace std; class Test { public: Test(int v):data(v){} void print()//this指標的型別是Test * { cout<&

(C++)在外訪問一個的私有成員變數

通過公共函式為私有成員賦值 #include <iostream> using namespace std; class Test { privat

java程式設計減少一個重複程式碼的竅門

java程式設計中減少一個類中重複程式碼的竅門 2013年12月08日 17:57:59 bestcxx 閱讀數:2427 標籤: java程式設計呼叫類減少程式碼宣告建立物件 更多 個人分類: java基礎 版權宣告:本文為博

一個封裝到另一個-Python

一個類的物件作為另一個類的引數 #物件的封裝 ***** #將一個類的物件,封裝到,另一個類中的方法中去 class Teacher: def __init__(self,tea_name,tea_age): self.teacher_name = tea_name