常考的区别?【面试】

abstract class和Interface的区别?

参考链接
抽象类不能直接创建对象,抽象方法所在的类必须是抽象类,必须被子类所继承;
抽象类成员有成员变量/构造方法/抽象方法/普通方法/代码块;
抽象类中不一定必须有抽象方法。
接口是比抽象类更抽象的类,只有常量和构造方法,为解决Java单继承、即不能多继承而生;
接口interface中的方法必须被全部实现,除非其是抽象类。
区别:
抽象类用extends继承抽象类;接口用implements实现接口;
抽象类可以有构造器,接口不能有;
抽象类可以public protected default修饰,接口只能interface;
抽象类可以有main方法并运行,接口不是;
抽象方法可以继承一个类和实现多个接口,接口只可继承一个或多个其他接口;
抽象类速度略快于接口;
抽象类可有默认方法实现,接口完全抽象不存在方法的实现。

继承和重载的区别?

继承如重写,方法名、参数列表、返回类型都相同,且访问修饰符可大不可小;重载除了方法名相同,参数列表和返回类型可不同。

重写和重载的区别?

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同),是父子类间多态性的一种表现。

重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,是一个类中多态性的一种表现。
覆盖了一个方法并且对其重写,以求达到不同的作用。最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。
在继承中也可能会在子类覆盖父类中的方法。
子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。
子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖的限制,相当于子类中增加了一个全新的方法。

重写:1.方法名相同 2.参数相同 3.返回类型相同 4.访问修饰符可扩大不可缩小,如父类为protected,子类必须为protected或public,private则只是在子类中重新定义一个新方法,并未对其进行覆盖 5.发生在子类和父类之间
重载:1.方法名相同 2.参数不同 3.在同一个类

简记:重写参数同、而重载不同,重写父子类,重载同一类

Overloaded的方法是否可以改变返回值的类型?

至于Overloaded的方法是否可以改变返回值的类型这个问题,要看你倒底想问什么呢?这个题目很模糊。如果几个Overloaded的方法的参数列表不一样,它们的返回者类型当然也可以不一样。
但我估计你想问的问题是:如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload。这是不行的,反证法可证。
因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

final,finally,finalize区别

final是修饰符,修饰属性 方法和类,表示属性不可变 方法不可覆盖 类不可继承,一个类既不能被声明为abstract又被声明为final;finally是异常处理中;finalize是 object的一个方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值