【JavaSE】Java基础语法(十六):抽象类

文章来源地址:https://www.yii666.com/blog/468690.html

文章目录

  • 1. 抽象类的概述
  • 2. 抽象类的特点
  • 3. 抽象类的实用价值
  • 4. 抽象类的案例


在这里插入图片描述

1. 抽象类的概述


在这里插入图片描述

当我们在做子类共性功能抽取时,有些方法在父类中并没有具体的体现,这个时候就需要抽象类了!
在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽
象类!文章地址https://www.yii666.com/blog/468690.html


2. 抽象类的特点


  • 抽象类和抽象方法必须使用 abstract 关键字修饰
//抽象类的定义
public abstract class 类名 {}
//抽象方法的定义
public abstract void eat();
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 抽象类不能实例化
  • 抽象类可以有构造方法
  • 抽象类的子类
  • 要么重写抽象类中的所有抽象方法
  • 要么是抽象类

3. 抽象类的实用价值

封装共性功能:抽象类可以封装多个子类共同拥有的功能,避免各自独立实现重复的代码。通过将共性行为定义在抽象类中,具体子类只需要实现自己的特殊逻辑即可,可以大大提高代码的复用性。网址:yii666.com<

规范行为:抽象类通过定义抽象方法,规范了子类的行为,强制子类必须实现相关方法,从而避免了因漏实现或实现不当带来的问题;同时也增加了代码的易读性、易维护性。

反向控制:抽象类能够为子类提供基本行为框架,在子类中调用父类定义的具体方法和属性,以完成基本功能。子类通过继承与扩展的方式实现自己的特殊逻辑,这种反向控制能够在大型工程中有效地管理代码结构和维护。

技术支持:在框架设计、系统维护以及代码重构等过程中,抽象类可以提供技术支持和规范,将大型工程的不同部分组合起来形成协调有序的整体,并且能够保证不同部分之间的解耦和相互独立性。


4. 抽象类的案例


案例需求
定义猫类(Cat)和狗类(Dog)
猫类成员方法:eat(猫吃鱼)drink(喝水…)


实现步骤

  1. 猫类和狗类中存在共性内容,应向上抽取出一个动物类(Animal)
  2. 父类Animal中,无法将 eat 方法具体实现描述清楚,所以定义为抽象方法
  3. 抽象方法需要存活在抽象类中,将Animal定义为抽象类
  4. 让 Cat 和 Dog 分别继承 Animal,重写eat方法
  5. 测试类中创建 Cat 和 Dog 对象,调用方法测试

代码实现文章来源地址https://www.yii666.com/blog/468690.html网址:yii666.com

动物类

public abstract class Animal {
	public void drink(){
		System.out.println("喝水");
	}
	
	public Animal(){
	}
	
	public abstract void eat();
}

猫类

public class Cat extends Animal {
	@Override
	public void eat() {
		System.out.println("猫吃鱼");
	}
}

狗类

public class Dog extends Animal {
	@Override
	public void eat() {
		System.out.println("狗吃肉");
	}
}

测试类

public static void main(String[] args) {
	Dog d = new Dog();
	d.eat();
	d.drink();
	Cat c = new Cat();
	c.drink();
	c.eat();
	//Animal a = new Animal();
	//a.eat();
}

在这里插入图片描述

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

领支付宝红包赞助服务器费用

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png