2024-12-19【Java程序设计教程】【第三章习题】

3.对象名表明对象的类型

3.试说明 nullthissuper 这三个变量的作用。

==========================================================================================================

null代表空对象

this代指类自身对象

super代指父类对象

4.简述静态方法、抽象方法和最终方法的作用。

=========================================================================================

静态方法:编译后系统直接给静态方法分配内存,直到程序运行结束;因此静态方法调用更快

抽象方法:在此类中不必实现他,只是一个虚方法,所有实现可以到子类中去做;子类必须实现父类所有抽象方法。

最终方法:用来完成标准功能的方法,表示该方法无法在子类中被覆盖。

7.7.研究下面这段代码:

================================================================================

class super{

public float getNum(){return 3.0f;}

}

public class Sub extends Super{

}

将下列哪个方法写入上述代码第五行,会出现编译错误?(B

A.public float getNum(){return 4.0f;}

//属于覆盖

B.public void getNum(){}

//‘com.company.Sub’ 中的 ‘getNum()’ 与 ‘com.company.Super’ 中的 ‘getNum()’ 冲突; 尝试使用不兼容的返回类型

//覆盖要求返回值与父类一致

C.public void getNum(double d){}

//属于重载

D.public double getNum(flloat d){return 4.0f;}

//属于重载

覆盖方法的调用原则:

(1)父类被覆盖的方法的声明必须要和子类的同名方法的声明完全匹配,才能达到覆盖的效果。

(2)覆盖的方法的返回值必须和被覆盖的方法的返回值一致。

(3)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖,因为修饰符为private的方法,子类不能从父类继承,所以覆盖也不存在了。

(4)当Java程序运行时,系统根据调用该方法的对象,来决定实际调用的是子类还是父类的方法。对于子类的一个对象,如果该子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。

(5)重写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。

(6)重写后的方法不能比重写的方法产生更多的例外,即抛出更多的异常。

方法重载要注意的几点:

(1)Java的方法重载要求同名的方法必须有不同的参数表,仅有返回类型不同是不足以区分两个重载的方法。

(2)参数类型的区分度一定要够,即参数类型、个数、顺序至少有一项不相同。例如不能是同一简单类型的参数,如int与long

(3)方法的修饰符可以不相同

(4)一个类的多个构造函数之间还可以相互调用,这可以通过关键字this来实现。需要注意的是,这个调用语句必须是整个构造函数的第一个可执行语句。

在一个类中不允许定义两个方法名相同,并且参数签名也完全相同的方法。因为假如存在这样的两个方法,Java虚拟机在运行时就无法决定到底执行哪个方法。

覆盖与重载的区别如下:

(1)方法的覆盖是子类和父类之间的关系,而重载是同一类内部多个方法间的关系

(2)方法的覆盖一般是两个方法间的覆盖,而重载时可能有多个重载方法;

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值