1.什么是抽象类?
1.使用关键字abstract修饰的类称为抽象类。
2.抽象类与普通类的区别:
????抽象类必须用abstract修饰,普通类不可以。
????抽象类不允许实例化,普通类可以实例化。
3.抽象类的规则
(1)抽象类不允许实例化,因为抽象方法是半成品。
(2)抽象类中可以有抽象方法,也可以没有抽象方法
(3)抽象类中可以有普通方法,也可以没有普通方法
(4)抽象类中可以有属性,也可以没有属性
(5)抽象类中可以有构造函数
(6)若类中有抽象方法,那么类必须是抽象类
(7)如果子类继承了抽象类,那么子类就必须实现抽象类中所有的抽象方法,否则子类也是抽象类。
2.什么是接口?
1.把程序中的接口理解成抽象类,注意是理解成抽象类,但接口不是抽象类。
2.接口中可以定义抽象方法,让子类去实现,从而实现多态。
3.把接口中定义的方法理解为“接口定义的子类的规范”,子类实现接口中的方法可以理解为子类遵循了接口的规范
4.接口的规则
(1)接口的访问权限是public或默认。
(2)接口中可以定义属性,但是属性必须是public static final修饰的,public static final可以省略。
? ? ? ? ?因此接口中的属性是常量。
(3)接口中可以定义方法,但是方法必须是public abstract修饰的,public abstract可以省略。
? ? ? ? ?因此接口中只能定义抽象方法。
(4)子类要实现接口中所有的抽象方法,否则子类也是抽象类。
(5)子类只能继承一个父类,但是可以实现多个接口,多个接口之间用逗号分隔。
(6)子类实现接口中的方法时,访问修饰符必须是public。
3.接口和抽象类的异同是什么
相同点:
????1.接口和抽象类都不能实例化。
????2.都是引用类型。
????3.都可以包含抽象方法。
不同点:
????1.子类只能继承一个抽象类,通过extends继承;
? ? 子类可以实现多个接口,通过implements实现。
????2.抽象类可以有构造方法,接口没有构造方法。
????3.抽象类可以有常量,抽象方法,也可以有变量,普通方法;
? ? 接口只能有常量和抽象方法。
????4.抽象类的子类实现抽象方法时权限范围不能缩小;
? ? 接口中子类实现抽象方法时权限修饰符必须是public。
今天关于接口和抽象类就介绍到这,接口和抽象类的异同点是面试常会问到的点,需要特别注意。欢迎小伙伴们留言分享。