IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java基础:抽象类 -> 正文阅读

[Java知识库]java基础:抽象类

抽象类

1、abstract修饰符

abstract修饰符可以修饰类、方法

2、abstract修饰方法

即抽象方法

抽象方法的特点

  • 志勇方法声明
  • 没有方法实现

例如:

//这是一个普通方法,有方法的声明和方法的实现
public void test(){}

//这是一个只有声明没有实现的方法
public void test();

//下面的是被abstract修饰的方法,没有方法的声明和实现
public abstract void test();

3、abstract修饰类

即抽象类
如下:

public abstract class Action{

}

3.1 抽象类和非抽象类的区别

  • 抽象类使用了abstract修饰符
  • 抽象类中可以编写抽象方法,非抽象类中不行
  • 抽象类不能进行实例化创建对象,非抽象类可以实例化创建对象

3.2 抽象类和抽象方法的关系

  • 抽象类中可以没有抽象方法(意味着可以有普通方法)
  • 有抽象方法的类必须定义为抽象类

??问题1??
为什么要定义抽象类
答:父类中的方法如果被子类们重写,并且子类的实现各不相同,则父类中的实现毫无意义,只剩下父类方法的声明还有意义,这个时候,可以把父类中的方法定义为抽象方法,即被abstract修饰,只有方法的声明,没有方法的主体实现。


例如下面的代码
父类Animal

//将父类Animal定义为抽象类
public abstract class Animal {
	//动物类中的eat()方法
	public void eat() {};
}

两个子类Cat和Dog

public class Dog extends Animal{
	public void eat() {
		//重写父类中的方法
		System.out.println("狗爱吃骨头。。。");
	}
}
public class Cat extends Animal{
	//重写父类中的方法
	public void eat() {
		System.out.println("猫爱吃鱼。。。");
	}
}

实现类

public class Demo {
	public static void main(String[] args) {
		//抽象类不能创建实例化对象,所以下面一行代码是错的
		//Animal animal= new Animal();
	
		//创建Dog类对象
		Dog dog = new Dog();
		//掉用重写后的eat方法
		dog.eat();
		//创建Cat类对象
		Cat cat = new Cat();
		//掉用重写后的eat方法
		cat.eat();
		
/*
		//也可以使用多态
		//抽象类不能创建实例化对象,可以使用多态解决
		Animal animal;
		//指向子类对象
		animal = new Cat();
		animal.eat();
		//指向子类对象
		animal = new Dog();
		animal.eat();
*/
	}
}


??问题2??
既然抽象类不能被实例化创建对象,那么这个类有什么用?
答:
抽象类的主要作用是用来被子类继承的,子类继承抽象类,实现抽象类中的抽象方法



??问题3??
抽象类不实例化创建对象,那么抽象类中是否有构造器?

答:
有构造器,这个构造器是让子类调用的,子类继承父类,子类创建对象的时候,会先调用父类的构造器


??问题4??
子类继承抽象父类,子类是否可以不实现父类中的抽象方法?
答:
简单来说就是将子类也定义为抽象类。----下面的更详细
可以不实现父类中的抽象方法。子类继承抽象父类,子类可以选择实现父类中所有的抽象方法,如果有任何一个抽象方法没有被子类实现,那么这个子类也要将自己声明为抽象类,那么这个子类也就只能等待,再来一个子类继承自己,去实现剩余没有实现的抽象方法,直到所有抽象方法都被实现为止。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:39:38  更:2021-10-08 11:40:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:07:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码