1.抽象类和普通类的区别及相同点?
区别:
①普通类不是用abstract 关键字修饰, 抽象类使用abstract关键字修饰;
②普通类可以被实例化, 同时不允许存在抽象方法;
③抽象类不能被实例化, 但是允许存在抽象方法;
相同点:
①抽象类和普通类都允许存在普通方法;
②抽象类虽然不能实例化,但是允许存在构造方法, 还允许各种属性(普通, 静态, 常量);
2.接口和抽象类的区别?
接口:
①实现类可以实现多个接口 (通过implement实现);
②接口中只能包含public static final (静态常量)属性;
③接口在jdk1.8以后不仅只有抽象方法, 还增加了 静态方法, default修饰的方法;
④接口中不允许有构造方法
⑤接口与接口之间可以实现多继承
⑥接口不可以创建对象;(与抽象类相同)
抽象类:
①子类只能继承一个抽象类
②抽象类可以包含任意属性
③抽象类中可以包含抽象方法, 静态方法, 普通方法, 但是不能有default修饰的方法
④抽象类可以有构造方法, 当子类创建对象时,父类的构造方法也会被子类的实例化对象实现;
⑤抽象类不可以创建对象
⑥父类中的抽象方法,子类必须重写; 非抽象方法可以重写可以不重写; 子类若是抽象类,父类中的所有方法都可以重写也可以都不重写;