方法重寫就是子類的方法覆蓋了父類的方法,即子類的方法名和父類的方法名相同
在南崗等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都營銷網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),南崗網(wǎng)站建設(shè)費(fèi)用合理。
class People
{
protected double weight,height;
public void speakHello()
{
System.out.println("yayawawa");
}
public void averageHeight()
{
height=173;
System.out.println("average height:"+height);
}
public void averageWeight()
{
weight=70;
System.out.println("average weight:"+weight);
}
}
class ChinaPeople extends People
{
//代碼1//重寫public void speakHello()方法
// 要求輸出類似“你好,吃飯了嗎”這樣的漢語信息
public void speakHello()
{
System.out.println("你好,吃飯了嗎");
}
//代碼2//重寫public void averageHeight()方法
//要求輸出類似“中國人的平均身高:173.0厘米”這樣的漢語信息
public void averageHeight()
{
System.out.println("中國人的平均身高:173.0厘米");
}
//代碼3//重寫public void averageWeight()方法
//要求輸出類似“中國人的平均體重:67.34公斤”這樣的漢語信息
public void averageWeight()
{
System.out.println("中國人的平均體重:67.34公斤");
}
//System.out.println(this.speakHello()+this.averageHeight()+this.averageWeight());
public void chinaGongfu()
{
System.out.println("坐如鐘,站如松,睡如弓");
}
}
class AmericanPeople extends People
{
//代碼5//重寫public void speakHello()方法
//要求輸出類似“How do you do”這樣的英語信息
public void speakHello()
{
System.out.println("How do you do");
}
//代碼6//重寫public void averageHeight()方法
public void averageHeight()
{
System.out.println("How do you do");
}
//代碼7//重寫public void averageWeight()方法
public void averageWeight()
{
System.out.println("How do you do");
}
public void americanBoxing()
{
System.out.println("直拳,勾拳");
}
}
class BeijingPeople extends ChinaPeople
{
//代碼9//重寫public void speakHello()方法
//要求輸出類似“您好”這樣的漢語信息
public void speakHello()
{
System.out.println("您好!");
}
//代碼10//重寫public void averageHeight()方法
public void averageHeight()
{
System.out.println("您好!");
}
//代碼11//重寫public void averageWeight()方法
public void averageWeight()
{
System.out.println("您好!");
}
public void beijingOpera()
{
System.out.println("京劇術(shù)語");
}
}
public class Example
{
public static void main(String args[])
{
ChinaPeople chinaPeople=new ChinaPeople();
AmericanPeople americanPeople=new AmericanPeople();
BeijingPeople beijingPeople=new BeijingPeople();
chinaPeople.speakHello();
americanPeople.speakHello();
beijingPeople.speakHello();
chinaPeople.averageHeight();
americanPeople.averageHeight();
beijingPeople.averageHeight();
chinaPeople.averageWeight();
americanPeople.averageWeight();
beijingPeople.averageWeight();
beijingPeople.beijingOpera();
americanPeople.americanBoxing();
beijingPeople.beijingOpera();
beijingPeople.chinaGongfu();
}
}
重寫:除了方法體里面的代碼,其他的部分都要和父類中的一樣(訪問權(quán)限要比父類中定義的訪問權(quán)限寬松,如父類中定義為public,那子類重寫的方法也必須是public,不能是protected或者private)。
樓上說法不準(zhǔn)確:重載方法區(qū)別在于參數(shù)個數(shù)和參數(shù)類型,不在于返回值。也就是,重載方法的返回值可以不一樣,而重寫方法的返回值必須一樣。
給你總結(jié)區(qū)分一下:重寫方法出現(xiàn)在子類中,只有在發(fā)生繼承關(guān)系的前提下,在能出現(xiàn)重寫方法,而且重寫的是父類的方法。而重載方法出現(xiàn)在同一個類中,和繼承沒有關(guān)系,重載的是類自己的方法。
首先是從Object父類繼承來的equals方法,然后你28行又寫了一個參數(shù)類型是CircleTest1的equals方法,這屬于方法的重載,也就是說此時CircleTest1類里有兩個重載的equals方法,而你18行傳入的是Object類型,所以調(diào)用的是從父類Object繼承而來的的equals方法,所以首先編譯沒問題,其次Object類里的equals方法寫的是this == obj,而你18行比較的是兩個不同對象,所以是false,21行調(diào)用的是子類重寫的父類equals方法,執(zhí)行的是子類重寫的方法體,比較的是radius變量值,默認(rèn)都是0,所以相等
代碼一不是重寫
重寫規(guī)則是
參數(shù)列表必須與被重寫方法的相同
返回類型必須與被重寫方法的返回類型相同
代碼一中 public void method()和 public float method(String s)參數(shù)列表不同,所以不是重寫
代碼 二中public float getNum() 和 public void getNum() 返回類型不同,所以報(bào)錯