ABSTRACTCLASS,class和interface应该怎么样区分呢?
基本上在各种面向对象语言中,抽象类可以包含部分实现代码。接口是纯定义,不可以包含实现代码。这就是区别。

如果要打比方,接口是蓝图。抽象类是半成品,在定义规范的同时做到一定程度的代码复用。
抽象类和实例化的区别?
抽象类是不能实例化的。但可以通过继承实现其抽象方法,然后创建实例或者可以创建匿名类来使用。
如:
抽象类:Person有一抽象方法say();
public abstract class Person {
abstract void say();
}
继承:
class Jim extends Person{
@Override
void say() {
System.out.println("Hi my name is Jim!");
}
}
匿名类:
Person p = new Person() {
@Override
void say() {
System.out.println("Hello");
}
};
工厂方法的优缺点?
优点
1. 和构造方法不一样,静态工厂方法可以有自己明确的名字。比如newInstance、getInstance、valueOf,可以更明确知道这些方法名字的意思。而构造方法只能通过new类名来创建,比如Person person = new Person()。
2. 不必没次调用时都创建一个新对象。使用静态工厂方法对外提供单例,其实就是提前准备好实例,这样可以重复利用,减少重复创建实例,不过这也需要注意线程安全问题。
3. 可以返回原返回类型的任何子类的对象。这个可以这么理解,例如EnumSet类,EnumSet是抽象类是不能被实例化的,但是可以通过里面的noneOf静态工厂方法返回它子类的对象,RegularEnumSet和JumboEnumSet都是EnumSet的子类,代码如下:
public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E>
implements Cloneable, java.io.Serializable {
EnumSet(Class<E>elementType, Enum[] universe) {}
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) {
if (universe.length <= 64)
return new RegularEnumSet<>(elementType, universe);
else
return new JumboEnumSet<>(elementType, universe);
}
}
4.在创建参数化类型实例的时候,它们使代码变得更加简洁。这条可以这么理解,比如在创建一个Map类型对象时,我们一般可以这么创建:
Map<String, List<String>> m = new HashMap<String, List<String>>();
但是在JDK7以上的版本,泛型参数是可以被推导出来的,所以可以有更简洁的写法:
Map<String, List<String>> m = new Hash
abstract?
abstract class也就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
class是什么意思?
cannot create instance of abstract class 无法创建抽象类的实例 重点词汇 cannot不能; 未可; 不可 instance情况; 例子,实例; 要求,建议; 诉讼手续; 举…为例 abstract class抽象类


还没有评论,来说两句吧...