抽象类:
抽象类就是类本身不断向上抽取而来,在抽取的过程中,子类方法的声明相同,方法体不同,故在抽取的过程中就形成了没有方法体的方法,这个方法就叫抽象方法,该方法所在的类就叫抽象类。
抽象类只描述了事物应该具备的基本行为,具体的内容,要通过子类的重写来描述该功能的特点。
抽象类的特点:
1、没有方法体,抽象方法一定要定义在抽象类中。
2、抽象类和方法都必须用关键字abstract修饰。
3、抽象类不能被实例化,不能创建对象。
4、抽象类必须由其子类重写所有的方法后,其子类才能被实例化。
抽象类的细节问题:
1、抽象类一定是父类,因为抽象类没有足够的信息来描述一个事物,要依托子类将其具体化。
2、抽象类是否有构造函数?
有,一个类的构造函数除了要给自己的对象初始化之外,还要给子类的对象初始化。(子类的构造函数会默认继承父类的无参的构造函数)
3、抽象类可以不定义抽象方法,存在的目的就是为了让这个类不能实例化,
没有对象。
4、抽象类中的关键字abstract不能和那些关键字共存?
1、final 由final修饰的类不能被继承。
2、static 由static修饰的方法可以直接用类来调用,而抽象方法
用类调用没有任何的意义。
3.private 用private修饰的方法只能在本类中调用,而抽象方法需
要被子类调用才有意义。
5、抽象类和一般类的异同:
相同点:
1、都是类,都是用来描述事物的,都可以定义属性、行为和构造函数。
不同点:
1、一般类不能定义抽象方法。
2、抽象类不能被实例化。
3、抽象类中的抽象方法不能有方法体。
4、抽象类必须是父类,一定要被继承,其子类必须要重写其所有的方法,其子类才能被实例化。
接口(interface):
当抽象类中的方法都是抽象的,这时就可以把抽象类定义为接口,可以把接口理解为一种特殊的抽象类。也就是说接口中所有的方法都是抽象方法。
接口中的成员:
1、常量 int x=1;生成默认的修饰符:final static public
2、抽象方法 生成默认修饰符 public abstract
接口的特点:
1、接口用interface来定义。
2、接口当中的成员都有固定的修饰符。
3、接口不能被实例化,不能创建对象。
4、接口需要由其子类重写了所有抽象方法之后,其子类才可以实例化。
5、接口中的成员都是用public来修饰的。
接口与类之间是实现关系(implements)。
接口的好处:多实现。
1、接口的出现降低了耦合性。
2、提高了拓展性。
3、对外暴漏的规则。
接口和接口之间是继承关系,可以实现多继承。
类与类之间是单继承。
接口和抽象类之间的区别:
1、抽象类是用于继承的,只能单继承。接口是用于实现的,可以多是实现。
2、抽象类当中可以提供非抽象的内容。
接口中只能定义抽象方法。
3、抽象类之间存在着继承关系 is a关系。
接口之间存在着实现关系 like a关系。
相同点:
都是事物不断向上抽取得到的。