十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
方法重写就是子类的方法覆盖了父类的方法,即子类的方法名和父类的方法名相同
在南岗等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、做网站 网站设计制作按需制作网站,公司网站建设,企业网站建设,品牌网站设计,成都营销网站建设,外贸网站建设,南岗网站建设费用合理。
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("京剧术语");
}
}
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();
}
}
重写:除了方法体里面的代码,其他的部分都要和父类中的一样(访问权限要比父类中定义的访问权限宽松,如父类中定义为public,那子类重写的方法也必须是public,不能是protected或者private)。
楼上说法不准确:重载方法区别在于参数个数和参数类型,不在于返回值。也就是,重载方法的返回值可以不一样,而重写方法的返回值必须一样。
给你总结区分一下:重写方法出现在子类中,只有在发生继承关系的前提下,在能出现重写方法,而且重写的是父类的方法。而重载方法出现在同一个类中,和继承没有关系,重载的是类自己的方法。
首先是从Object父类继承来的equals方法,然后你28行又写了一个参数类型是CircleTest1的equals方法,这属于方法的重载,也就是说此时CircleTest1类里有两个重载的equals方法,而你18行传入的是Object类型,所以调用的是从父类Object继承而来的的equals方法,所以首先编译没问题,其次Object类里的equals方法写的是this == obj,而你18行比较的是两个不同对象,所以是false,21行调用的是子类重写的父类equals方法,执行的是子类重写的方法体,比较的是radius变量值,默认都是0,所以相等
代码一不是重写
重写规则是
参数列表必须与被重写方法的相同
返回类型必须与被重写方法的返回类型相同
代码一中 public void method()和 public float method(String s)参数列表不同,所以不是重写
代码 二中public float getNum() 和 public void getNum() 返回类型不同,所以报错