Java面试总结-面向对象篇

一、面向对象的三大特征。

  1. 封装
      对同一类事物的特征和功能包装在一起,只对外暴露接口,即信息的隐藏。
      封装的好处:1、实现专业的分工;2、减少代码的耦合;3、可以自由修改类的内部结构。
  2. 继承
      从已有的类中派生新的类,新的类可以吸收已有类的属性和行为并扩展新的能力,Java中的类不支持多继承,接口可以,一个接口可以继承多个其它接口。父类是子类的抽象化,子类是父类的具体化。

  衍生的问题:接口和抽象类有哪些异同?
  Java面试总结-面向对象篇_第1张图片
3. 多态
  同一个行为具有多个不同表现形式或形态的能力。

二、静态与实例变量(方法)的区别。

  • 语法区别:静态变量需要加static关键字,实例则不用;
  • 隶属区别:静态变量属于某个对象的属性,而静态属于类;
  • 运行区别:静态变量在JVM加载类时被创建,实例变量在实例化对象时创建。

三、类的加载顺序。
  观察下列代码,说出运行结果。

package test;
//请写出程序的输出结果
public class ExecutionSequence {

	public static void main(String[] args) {
		new GeneralClass();

	}

}

class ParentClass{
	static {
		System.out.println("1.我是父类静态块");
	}
	
	{
		System.out.println("2.我是父类非静态块");
	}
	
	public ParentClass() {
		System.out.println("3.我是父类构造函数");
	}
}

class GeneralClass extends ParentClass{
	static {
		System.out.println("4.我是子类静态块");
	}
	
	{
		System.out.println("5.我是子类非静态块");
	}
	
	public GeneralClass() {
		System.out.println("6.我是子类构造函数");
	}
}

输出结果:Java面试总结-面向对象篇_第2张图片
类的加载顺序原则:1.静态优先;2.父类优先;3.非静态块优先于构造函数。

四、Java的异常体系
Java面试总结-面向对象篇_第3张图片
Error和Exception的区别与联系:
Java面试总结-面向对象篇_第4张图片

你可能感兴趣的:(Java面试总结-面向对象篇)