在面向对象编程中,普通类和抽象类是两种不同的类别。
普通类是指可以被实例化的类,是具体的实体,可以直接实例化为对象,并且包含完整的实现细节。普通类可以定义属性、方法和构造函数等,并且可以被其他类继承。普通类的实例可以直接调用其方法和访问其属性
抽象类使用abstract关键字进行声明,是一个不能被实例化的类,需要通过子类实例化,用来作为其他类的父类。抽象类可以定义具体方法,同时也可以定义抽象方法。抽象方法不能被static修饰,并且其本身没有具体实现,只是定义了方法签名,需要由其子类提供具体实现。抽象类中允许普通方法有主体,含有抽象方法的类必须声明为抽象类,其子类必须实现其中所有的抽象方法,否则这个子类也必须声明为抽象类。
抽象类提供了一种用于定义共享行为和属性的机制,以便多个具体子类可以共享。抽象类提供了一种约束和规范的机制,确保子类实现了必要的方法。抽象类可以提供默认的实现,以减少子类的重复代码,并且可以为子类定义共同的方法和属性。
总结:
1、普通类可以直接实例化为对象,包含完整的实现细节
2、抽象类不能直接实例化为对象,只能作为其他类的父类使用,包含抽象方法和具体方法
3、抽象类提供了一种规范的机制,确保子类实现了必要的方法,并可以为子类定义共同的方法和属性