ALi面试题

JAVA中接口与抽象类的区别

要知道接口与抽象类的区别,首先我们得先知道这两玩意到底是啥。

抽象类是一种专门用来当做父类的类,作用类似于我们所说的“模板”,用关键字abstract声明,其目的是要设计者一句它的格式来修改并创建新的类。但是抽象类并不能创建对象,只能通过抽象类派生出新的类(子类),再由它来创建对象。 抽象类的使用中存在单继承的限制,即一个子类只能继承一个抽象类。

抽象类的使用规则(重要):

  1. 包含抽象方法的类必须是抽象类。
  2. 抽象类和抽象方法都必须用“abstract”声明。
  3. 抽象方法只需要声明,不需要实现。(这句话有点抽象,下面会解释)
  4. 抽象类必须被继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。

现在解释一下上面所说的第三条规则“抽象方法只需要声明,不需要实现。

//实现是针对其子类:例如
public abstract class Father{
	//show方法在父类中只申明,不实现
	public abstract void show();
}
public class Child extends Father{
	//实现
	public void show{
		System.out.println("show method!");
	}
}

你看父类的方法
public abstract void show();
只是做了声明,并没有方法体。
在其子类中:
public void show{
System.out.println(“show method!”);
}
实现了方法内部功能,这里只是输出一句话,当然你可以做其他功能。
(这个例子引用自:百度知道

接口也被理解为是JAVA中的一种特殊的类,用interface声明,是由全局常量和公共方法所组成。需要注意的是,在接口中定义的抽象方法必须是public访问权限,这一点不允许改变。(如果接口方法中省略了public,它的访问权限依然是public,不是default,这一点需要注意。)与抽象类一样,接口若要使用也必须通过子类,子类通过implements关键字来实现接口。
很关键的一点是一个子类可以同时实现多个接口,这就摆脱了JAVA中单继承的局限
抽象类与接口的区别汇总:

序号 区别点 抽象类 接口
1 定义 包含一个抽象方法的类 抽象方法和全局常量的集合
2 组成 构造方法、抽象方法、普通方法、常量、变量 常量、抽象方法
3 使用 子类继承抽象类(extends) 子类实现接口(implement)
4 关系 抽象类可以实现多个接口 接口不能继承抽象类,但允许继承多个接口
5 常见设计模式 模板设计 工厂设计、代理设计
6 对象 都通过对象的多态性产生实例化对象 都通过对象的多态性产生实例化对象
7 局限 抽象类有单继承的局限 接口没有单继承的局限
8 实际 作为一个模板 作为一个标准或表示一种能力

另外两点:在选择上,如果抽象类和接口都可以被使用,则优先使用接口,避免单继承的局限;特殊的,一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类。
(上面来自《Java开发实战经典》(李兴华著)与峰哥面经)

简述JVM的内存布局

(未完待续!最近在准备阿里的机试,更新进度可能会慢一点了)

猜你喜欢

转载自blog.csdn.net/biandi9300/article/details/89094899