抽象类(Abstract Class)是Java中一个不能被直接实例化的类,它使用abstract
关键字进行声明。抽象类可以包含抽象方法,也可以包含具体方法和变量。抽象类的主要目的是为了提供一个通用的模板,让其他子类根据这个模板进行扩展。
private
修饰符,因为子类无法重写private
方法。final
和static
修饰符,因为这会阻止子类重写方法。final
修饰)和普通的实例变量。abstract class AbstractClass {
protected int val; // 成员变量
abstract void abstractMethod(); // 抽象方法
void concreteMethod() {
System.out.println("普通方法");
}
}
abstract class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.age = age;
this.name = name;
System.out.println(name + "今年" + age + "岁");
}
abstract void sound(); // 抽象方法
public void methodA() { // 具体方法是有实现代码的方法,可以直接被子类继承或覆盖。
System.out.println("这是方法A");
}
}
class Dog extends Animal {
public Dog(String name, int age) {
super(name, age);
}
@Override
void sound() {
System.out.println("汪汪汪~");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("小七", 2); // 通过子类来实例化,并且在子类的构造方法调用父类的构造方法
}
}
public static final
的。public abstract
的,但Java 8开始接口中可以有默认方法和静态方法。public
的。抽象类在许多设计模式中都有应用,例如:
在实际项目中,抽象类可以用于以下场景:
抽象类是Java中一个强大的特性,它允许我们定义一个包含抽象方法的类,这些方法由子类实现。抽象类提供了一种方式来创建一个模板,子类可以继承这个模板并根据需要实现具体的行为。这种机制不仅提高了代码的复用性,还使得代码结构更加清晰,有助于实现代码的模块化。抽象类的应用非常广泛,特别是在设计大型软件系统时,它可以帮助我们定义出清晰的类层次结构,提高代码的可维护性和扩展性。随着Java语言的不断发展,抽象类与接口的结合使用,使得面向对象编程更加灵活和强大。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。