Java面试题库之面向对象(一)

1.super与this的区别?

this当前类的对象,super父类对象。
super:在子类访问父类的成员和行为,必须受类继承规则的约束。
而this代表当前对象,当然所有的资源都可以访问。
在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰)。此时你必须加入对父类的实例化构造,而this就没有这个要求,因为它本身就进行实例化的构造。
而在方法中super和this使用的方法就差不多了,只不过super 要考虑是否能访问其父类的资源。
super()与this()的区别主要有以下:
不同点:
1、super()主要是对父类构造函数的调用,this()是对重载构造函数的调用
2、super()主要是在继承了父类的子类的构造函数中使用,是在不同类中的使用;this()主要是在同一类的不同构造函数中的使用
相同点:
1、super()和this()都必须在构造函数的第一行进行调用,否则就是错误的

2.作用域public,protected,private,以及不写时的区别?

public:不同包、同一包、类内都可用
private:类内
protected: 不同包的子类、同一包、类内都可用,包外不可用。
不写时:同一包内、类内默认为friendly
关键字 当前类 同一package 子孙类 其他package
public
protected ×
friendly × ×
private × × ×

3.编程输出如下图形。

* * * * *
* * * *
* * *
* *
*
代码如下:
public class Print {
	public static void main(String[] args) {
		for (int i = 0; i < 5; i++) {
			for (int j = 5; j > i; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

4.JAVA的事件委托机制和垃圾回收机制

java事件委托机制的概念:一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返回。
垃圾回收机制:垃圾收集是将分配给对象但不再使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收。

5.在JAVA中,如何跳出当前的多重嵌套循环?

用break; return方法。

6.什么是java序列化,如何实现java序列化?(写一个实例)

序列化:处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。读取时使用ObjectInputStream对象的readObject(Object obj)

[v_notice]参考资料:[什么是Java序列化,如何实现java序列化](https://www.cnblogs.com/yangchunze/p/6728086.html)[/v_notice]

7.一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以。
如果这个类的修饰符是public,其类名与文件名必须相同。
一个源文件中至多有一个public修饰的类
每个编译单元只能有一个public 类。这么做的意思是,每个编译单元只能有一个公开的接口,而这个接口就由其public 类来表示。
你可以根据需要,往这个文件里面添加任意多个提供辅助功能的package 权限的类。但是如果这个编译单元里面有两个或两个以上的public 类的话,程序就不知道从哪里导入了,编译器就会报错。

8.排序都有哪几种方法?请列举。用JAVA实现一个冒泡排序?

排序的方法有:
插入排序(直接插入排序、希尔排序)
交换排序(冒泡排序、快速排序)
选择排序(直接选择排序、堆排序)
归并排序
分配排序(箱排序、基数排序)
冒泡排序的伪代码。(两层for循环)

9.overload和override的区别。overloaded的方法是否可以改变返回值的类型?

方法的重写override,子类覆盖父类的方法,将子类传递父类的引用调用的还是子类的方法。
重载overloading,一个类多个方法,名称相同,参数个数类型不同。
两者都是Java多态性的不同表现。
Overloaded的方法是可以改变返回值的类型。

[v_notice]参考资料:[Override和Overload区别,Overloaded的方法是否可以改变返回值的类型?](https://blog.csdn.net/singit/article/details/47722047)[/v_notice]

10.下段代码的输出结果

public class Ctest()
{
	Public static void main()
	{
		System.out.prinln(8+8+”88”+8+8);
	}
}
168888

11.final有什么特点?

final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。

[v_error]注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。[/v_error]

[v_notice]参考资料:[final修饰的类有什么特点](https://www.cnblogs.com/braveym/p/6526858.html)[/v_notice]

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » Java面试题库之面向对象(一)

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多