使用abstract修饰且没有方法体的方法,称为抽象方法
特点:
1):使用抽象abstract修饰,无方法体,留给子类去实现
2):抽象方法修饰符不能是private、final和static
3):抽象方法必须定义在抽象类或接口中
一般的:把abstract写在方法修饰符最前面
----------------------------------------
使用abstract关键字修饰的类,称为抽象类
特点:
1):不能创建实例即不能new一个抽象类,即使创建出抽象类对象,调用抽象方法,根本没有方法体
2):可以不包含抽象方法,若包含,该类必须作为抽象类,抽象类可以包含普通方法(留给子类调用),抽象类是有构造器的, 子类构造器必须先调用父类构造器
3):若子类没有实现/覆盖父类所有的抽象方法,那么子类也得作为抽象类(抽象派生类)
4):构造方法不能都定义成私有的,否则不能有子类(创建子类对象前先调用父类构造方法)
5):抽象类不能使用final修饰,因为必须有子类,抽象方法才能实现
6):抽象类必须有子类才有意义,功能才能实现
----------------------------------------
抽象类不能实例化
----------------------------------------
抽象类和普通类的区别:
普通方法有的成员(方法、字段、构造器),抽象类都有
抽象类不能创建抽象对象,抽象类中可以包含抽象方法
特点:
1):使用抽象abstract修饰,无方法体,留给子类去实现
2):抽象方法修饰符不能是private、final和static
3):抽象方法必须定义在抽象类或接口中
一般的:把abstract写在方法修饰符最前面
----------------------------------------
使用abstract关键字修饰的类,称为抽象类
特点:
1):不能创建实例即不能new一个抽象类,即使创建出抽象类对象,调用抽象方法,根本没有方法体
2):可以不包含抽象方法,若包含,该类必须作为抽象类,抽象类可以包含普通方法(留给子类调用),抽象类是有构造器的, 子类构造器必须先调用父类构造器
3):若子类没有实现/覆盖父类所有的抽象方法,那么子类也得作为抽象类(抽象派生类)
4):构造方法不能都定义成私有的,否则不能有子类(创建子类对象前先调用父类构造方法)
5):抽象类不能使用final修饰,因为必须有子类,抽象方法才能实现
6):抽象类必须有子类才有意义,功能才能实现
----------------------------------------
抽象类不能实例化
----------------------------------------
抽象类和普通类的区别:
普通方法有的成员(方法、字段、构造器),抽象类都有
抽象类不能创建抽象对象,抽象类中可以包含抽象方法