Java抽象类
2023-12-20 03:22:59
什么是抽象类?
- 再Java中有一个关键字叫:abstract,它就是抽象的意思,可以用它修饰类、成员变量。
- abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法。
?
?抽象类的注意事项、特点
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
- 类该有的成员(成员变量、方法、构造器)抽象类都可以有。
- 抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现。
- 一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
使用抽象类的好处
- 父类知道每个子类都有做某个行为,但每个子类要做的情况不一样,父类就定义成抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态。
Animal类?
public abstract class Animal {
private String name;
public abstract void cry();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Dog类
public class Dog extends Animal{
@Override
public void cry() {
System.out.println("汪汪汪的叫");
}
}
?Cat类
public class Cat extends Animal{
@Override
public void cry() {
System.out.println("喵喵喵的叫");
}
}
?Test类
public class Test {
public static void main(String[] args) {
Animal a = new Cat();
a.cry(); //更好的支持多态
}
}
?
抽象类的常见应用场景:模板方法设计模块
模板方法设计模块解决了什么问题
- 解决方法存在重复代码的问题。
?
模板方法设计模式的写法
- 定义一个抽象类
- 再里面定义两个方法
- 一个是模板方法:把相同代码放里面去
- 一个是抽象方法:具体实现交给子类完成
People类
public abstract class People {
/*
* 设计一个模板设计模式
* 定义一个模板方法
* */
public void write(){
System.out.println("abc");
System.out.println("张三、李四、王五");
System.out.println(writeMain());
// 模板方法并不清楚正文部分要怎么写,但它知道子类肯定要写
System.out.println("666");
}
// 设计一个抽象类方法写正文,具体实现交给子类来完成
public abstract String writeMain();
}
Teacher类
public class Teacher extends People{
@Override
public String writeMain() {
return "123456789";
}
}
Student类
public class Student extends People{
@Override
public String writeMain() {
return "987654321";
}
}
Test类
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher();
t.write();
Student s = new Student();
s.write();
}
}
建议使用final关键字修饰模板方法
- 模板方法是给对象直接使用的,不能被子类重写
- 一旦子类重写了模板得到,模板方法就失效了
文章来源:https://blog.csdn.net/SU_mu147/article/details/135086492
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!