java class equals_面试真题:Java重写类的equals方法

原标题:面试真题:Java重写类的equals方法

1.Java重写类的equals方法

参考答案:

重写equals方法,也要重写hashCode()方法,重写hashCode()方法的原则:

(1)同一个对象多次调用hashCode()方法应该返回相同的值;

(2)当两个对象通过equals()方法比较返回true时,这两个对象的hashCode()应该返回相等的(int)值;

(3)对象中用作equals()方法比较标准的Filed(成员变量(类属性)),都应该用来计算hashCode值。

2.java8 中接口与抽象类区别?

参考答案:

(1)接口能够多实现,而抽象类只能单独被继承,其本质就是,一个类能继承多个接口,而只能继承一个抽象类。

(2)方法上,抽象类的方法可以用abstract 和public或者protect修饰。而接口默认为public abstact 修饰。

(3)抽象类的方法可以有需要子类实现的抽象方法,也可以有具体的方法。而接口在老版本的jdk中,只能有抽象方法,但是Java8版本的接口中,接口可以带有默认方法。

(4)属性上,抽象类可以用各种各样的修饰符修饰。而接口的属性是默认的public static final

(5)抽象类中可以含有静态代码块和静态方法,而接口不能含有静态方法和静态代码块。

(6)抽象类可以含有构造方法,接口不能含有构造方法。

(7)设计层面上,抽象类表示的是子类“是不是”属于某一类的子类,接口则表示“有没有”特性“能不能”做这种事。如飞机和鸟都能飞,但是他们在设计上实现一个Fly接口,实现fly()方法。远比两个类继承飞行物抽象类好得多。因为,飞机和鸟有太多的属性不一样。

(8)设计层面上,另外一点,抽象类可以是一个模板,因为可以自己带集体方法,所以要加一个实现类都能有的方法,直接在抽象类中写出并实现就好,接口在以前的版本则不行。新版本Java8才有默认方法。

(9)既然说到Java8 那么就来说明,Java8中的接口中的默认方法是可以被多重继承的。而抽象类不行。

(10)另外,接口只能继承接口。而抽象类可以继承普通的类,也能继承接口和抽象类。

48eac454dea5922d38d6d578ed88d168.png

3.class 与 object区别?

参考答案:

class中没有静态方法和静态字段,然而所有方法和变量在被new实例化之前无法访问,main函数就不能定义在class中。object中变量方法默认都是静态的,所以在scala中可以用object来实现这些功能,所有main方法必须在object中被调用,提供程序的主入口;还提供了扩展App特质,object通过继承App不需要主方法也能执行。

4.map与mapPartition区别?

参考答案:

rdd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。

两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。

假设一个rdd有10个元素,分成3个分区。如果使用map方法,map中的输入函数会被调用10次;而使用mapPartitions方法的话,其输入函数会只会被调用3次,每个分区调用1次。

如果你想获取更多面试秘籍,关注微信:IT资讯007(ID:itzx07)

回复【行业简历模板】即可领取

回复【字体】即可领取

回复【PDF】即可领取

回复【PPT】即可领取

更多信息详询:济南IT培训 、济南UI设计培训 、济南PS课程 、面试技巧、IT面试题返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值