首页 > 其他 > 详细

面向对象(一)

时间:2020-11-12 21:39:33      阅读:47      评论:0      收藏:0      [点我收藏+]

若一个类不重写,它的equals()方法是如何比较的?

比较对象的内存地址。

hashCode()和equals()有什么联系?

相等的对象(equals方法返回true)必须具有相同的哈希码,但是哈希码相同的两个对象并不一定相等。

请说明java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

方法覆盖一般是子类重写了父类的方法,方法重载是指在一个类里面有两个或者两个以上方法名相同,但是参数列表不同的方法。重载对返回值类型没有特殊要求。

请你谈以下面向对象的“六原则一法则”?

(1)、单一职责原则:一个类只做它该做的事情,践行了高内聚原则。

(2)、开闭原则:对外扩展开发,对内修改关闭。

(3)、依赖倒转原则:面向接口编程,即,声明方法的参数类型,返回类型以及变量的引用类型时尽可能使用抽象数据类型而不是具体类型,因为抽象数据类型可以被任意一个子类所替代。

(4)、里氏替换原则:任何时候都可以用子类型替换掉父类型,里氏替换原则可以用来检查继承关系是否合理。

(5)、接口隔离原则:接口要小而专,绝不能大而全。java中接口代表能力、约定、角色。

(6)、合成聚合复用原则:优先使用合成关系或者聚合关系来复用代码。

(7)、迪米特法则:又被称为最少知识原则,一个对象应当对其他对象尽可能少的了解。

请你说明如何通过发射获取和设置对象的私有属性值?

可以过类对象的getDeclaredField()方法获取属性的Field对象,在通过setAccessible(true)方法将其设置为可以访问,然后就可以通过get和set方法获取或者设置私有属性值了。

请你判断当一个对象被当作参数传递给一个方法后,此方法可改变这对象的属性,并可返回变化后的结果,这是值传递还是引用传递?

值传递。java中只有值传递参数。当一个对象实例被当作参数传递进入一个方法时,参数的值就是该对象的引用。对象的内容可以在方法中改变,当对象的引用永远不会改变。

请你说说Static Nested Class 和 Inner Class的不同?

Static Nested Class 是被声明为静态的内部类(嵌套类),它可以不依赖外部类实例被实例化。通常的内部类需要在外部类实例化后才能实例化。静态内部类的内部不能直接访问外部类非静态的成员。

请你讲讲抽象类和接口的区别?

从设计层面来讲,接口设计的目的是为了对类的行为进行约束,抽象类设计的目的是实现代码的复用,它们主要有以下区别:
(1)、抽象类中可以写非抽象方法,实现代码的复用,java8之后接口可以写静态方法,但一般接口只写抽象方法。

(2)、抽象类可以用public、protected、private修饰,接口只能用public修饰。

(3)、一个类只能继承一个抽象类,但可以实现多个接口。

(4)、接口中声明的变量都是final变量,抽象类可以包含非final变量。

(5)、

请你说明是否可以在static环境中访问非static变量?

不可以。static变量在java中是属于类的,它在所有实例中值是一样的。当类被java虚拟机载入的时候,会对static变量初始化。

请你说明一下final、finally、finalize的区别?

(1)、final用于声明属性、方法和类,分别表示属性不可修改、方法不可覆盖、类不可继承。

(2)、finally表示最后总要执行的代码块。

(3)、finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。需要时可以覆盖finalize方法在垃圾收集时回收其他资源,如关闭文件。

面向对象的特征有哪些?

抽象、多态、继承、封装。

请说明 Comparable 和 Comparator接口的作用和区别?

(1)、Comparable方法提供了一个compareTo()方法,该方法可以给两个对象进行排序,返回负数、0、整数来表示小于、等于、大于。

(2)、Comparator接口提供了compare()方法和equals()方法用于比较,compare()方法可以给两个输入参数排序,返回负数、0、整数来表示小于、等于、大于。equals()方法需要接受一个对象作为参数,equals()方法用来决定输入参数是否和comparator相等,只有当输入参数也是一个comparator,并且输入参数和当前comparator的排序结果相同时才会返回true。

请你解释下extends和super泛型限定符?

extends表示的是泛型的上界(例如),super(例如)表示的是泛型的下界。

什么是泛型?

泛型就是参数化类型,例如在定义方法的时候不指定具体的返回值类型,而在调用的时候传入具体的类型。

面向对象(一)

原文:https://www.cnblogs.com/java-LiuShilin/p/13960653.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!