前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面试题系列之基础部分(三)——每天学5个问题

Java面试题系列之基础部分(三)——每天学5个问题

作者头像
用户1289394
发布2018-02-26 18:09:01
5770
发布2018-02-26 18:09:01
举报
文章被收录于专栏:Java学习网Java学习网

Java基础部分学习的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法,这些都是最基本而且最易问到的,我们只要每天学一点点,日积月累知识面会更广。

网络配图

1、Overload和Override的区别。

Overload是重载的意思,Override是覆盖的意思,也就是重写。重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。

子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题;;子类方法的访问权限只能比父类的更大,不能更小;如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

override可以翻译为覆盖,在使用覆盖时要注意以下几点:

(1)、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

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

(3)、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

(4)、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

网络配图

overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行;在使用重载要注意以下的几点:

(1)、在使用重载时只能通过不同的参数样式;例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同 一方法内的几个参数类型必须不一样,例如可以是fun(int,float),但是不能为fun(int,int));

(2)、不能通过访问权限、返回类型、抛出的异常进行重载;

(3)、方法的异常类型和数目不会对重载造成影响;

(4)、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话, 也只是定义了一个新方法,而不会达到重载的效果。

2、构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。

3、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?抽象类中是 否可以有静态的main方法?

接口可以继承接口;抽象类可以实现(implements)接口,抽象类可以继承具体类;抽象类中可以有静态的main方法;只有记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。

网络配图

4、String是最基本的数据类型吗?

基本数据类型包括byte、int、char、long、float、double、boolean和short。

java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类;为了提高效率节省空间,我们应该用StringBuffer类。

5、是否可以继承String类?

String类是final类故不可以继承。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档