欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力
对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。
专栏:
文章概述:对抽象方法和抽象类 的介绍
关键词:抽象方法和抽象类
本文目录:
抽象方法和抽象类
· 抽象方法
- 使用abstract修饰的方法,没有方法体,只有声明。
- 定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。
· 抽象类
- 包含抽象方法的类就是抽象类。
- 通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。
【示例】抽象类和抽象方法的基本用法
//抽象类
abstract class Animal {
abstract public void shout(); //抽象方法
}
class Dog extends Animal {
//子类必须实现父类的抽象方法,否则编译错误
public void shout() {
System.out.println("汪汪汪!");
}
public void seeDoor(){
System.out.println("看门中....");
}
}
//测试抽象类
public class TestAbstractClass {
public static void main(String[ ] args) {
Dog a = new Dog();
a.shout();
a.seeDoor();
}
}
抽象类的使用要点:
- 有抽象方法的类只能定义成抽象类
- 抽象类不能实例化,即不能用new来实例化抽象类。
- 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
- 抽象类只能用来被继承。
- 抽象方法必须被子类实现。
抽象类也可以有普通的方法
示例:
abstract class Animal {
String name;
// 抽象类的构造方法
Animal(String name) {
this.name = name;
System.out.println("Animal constructor called");
}
// 抽象方法
abstract void makeSound();
// 具体方法(普通方法)
void sleep() {
System.out.println(name + " is sleeping");
}
}
class Dog extends Animal {
// 子类构造方法
Dog(String name) {
super(name); // 调用父类构造方法
System.out.println("Dog constructor called");
}
@Override
void makeSound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Buddy"); // 创建 Dog 对象,调用父类和子类构造方法
dog.makeSound(); // 调用子类实现的方法
dog.sleep(); // 调用从抽象类继承的具体方法
}
}