在Java中,抽象类和非抽象类都是基本的类类型,对于初学者来说,这两者的区别可能容易混淆。
抽象类是一种不能被实例化的类类型,意思是只能作为父类来派生其他子类,但是不能直接创建它的实例对象。抽象类修饰符是"abstract":
abstract class Animal { public abstract void eat(); }
上面的代码定义了一个抽象类Animal,它有一个抽象方法eat(),不包含实现体,而是由它的派生类来实现。如果一个类派生自抽象类,那么它必须实现抽象方法,否则这个类也必须定义为抽象类。
非抽象类是一种可被实例化的类类型,它具有实现的方法和属性,可以被直接实例化:
class Dog { private String name; public void setName(String name) { this.name = name; } public String getName() { return this.name; } }
上面的代码定义了一个非抽象类Dog,它有一个私有属性name和公有的setter和getter方法,可以实例化一个Dog对象,例如:
Dog mydog = new Dog(); mydog.setName("Sam"); System.out.println(mydog.getName()); // Output: Sam
总之,抽象类和非抽象类都有各自的使用场景,抽象类适用于定义一些通用的基础类(如Animal)供派生类继承和扩展,而非抽象类适用于描述具体的业务对象(如Dog)。程序员可以根据实际需要,选择适合的类类型。