java抽象类的定义和使用

1. 抽象类的规则
● 抽象类不可以被实例化,也就是不能被new,会出现编译错误。抽象类如果想实例化可以通过非抽象子类的方式去实现。
● 抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类。而且抽象类中的抽象方法只能做方法声明,不能有具体的实现逻辑。
● 抽象类中的抽象方法,在非抽象子类中必须要实现。
● 构造方法、类方法(用static修饰的方法)不能声明为抽象方法。
2. 说明
一般是在设计阶段决定抽象类的使用,抽象类在业务中一般表示一种分类,而其子类这是该分类下的具体。例如 动物 分为 猫、狗等,在代码的实现时可以将 Animal 使用 abstract 修饰,而 Cat 、Dog两个类要继承Animal,如果Animal中有 abstract 修饰的方法,在 Cat 和 Dog必须要实现抽象方法。除非 Cat、Dog 也是使用 abstract修饰。
3. 代码实现
Animal.java
// 抽象类中才可以有抽象方法
public abstract class Animal {
private String name;
// 抽象方法,只需要在此声明即可
// 动物的行动方式
public abstract void action();
public void eat() {
System.out.println("动物都会吃东西");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
** Dog.java**
// 该类是 Animal 的非抽象子类,抽象方法必须要实现
public class Dog extends Animal {
public Dog() {
this.setName("狗");
}
// 此方法在 Aniaml中是非抽象方法,在 Dog 中不是必须重写的方法
@Override
public void eat() {
System.out.println("狗可以吃骨头");
}
// 此方法在 Aniaml中是 抽象方法,在 Dog 中必有具体实现
@Override
public void action() {
System.out.println("狗可以跑");
}
}
Cats.java
// 当 Animal 的子类同为抽象类的时候,抽象方法可以不用实现
public abstract class Cat extends Animal {
public Cat() {
this.setName("猫类");
}
}
抽象类 Animal 是不能直接使用new创建实例的,只能通过 实例化其非抽象子类
public static void main(String[] args) {
// 实例化方式
Animal dog = new Dog();
// 此种方式相当于直接创建一个 非抽象类,不是抽象类实例化的一种方式
Animal animal = new Animal() {
@Override
public void action() {
}
};
}
java抽象类的定义和使用的更多相关文章
- java中抽象类的定义和使用
java虽然比较简单,但是细节的知识点还是很多的,现在,介绍一下抽象类的定义和实现基础. 指的是在类中定义方法,而不去实现它,而在它的子类中去具体实现,继承抽象类的子类必须实现父类的抽象方法,除非子类 ...
- 【48】java抽象类和接口的定义和区别
首先看看他们的区别: 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力. ...
- java抽象类,接口(接口定义,实现接口,instanceof运算符,对象转换)
抽象类 在面向对象的概念中,所有的对象都是通过类来表述的,但并不是所有的类都能够完整的描绘对象,如果一个类中没有包含足够的信息来描绘一类具体的对象,这样的类就是抽象类.抽象类往往用来表征对问题领域进行 ...
- Java 抽象类与接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是 Java 语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予 Java 强大的面向对象的能力.他们两者之间对 ...
- java抽象类
Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...
- 浅谈java抽象类和接口
第一次,写这个,没有把图片放上来,有兴趣的可以点击连接看原文 http://note.youdao.com/noteshare?id=aecbd52b9240f23c0954e8086b848a17 ...
- Java接口、Java抽象类、C++抽象类的区别
由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下: 接口: 接口用interface关键字定义, 名字一般使用-able形式的形容词. 接口通常定义抽象方法和 ...
- java抽象类与接口的区别及用法
java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...
- java 抽象类和接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...
- java抽象类和接口详解
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...
随机推荐
- Logstash:input plugin 介绍
- Gitlab注册Runner
1.先启动Gitlab,然后登陆进去,找到项目设置界面 2.部署Runner 这里采用docker安装的方式,也可以采用其他方式安装 # 创建docker镜像使用的数据卷 {20-07-16 16:2 ...
- 容器监控工具WeaveScope初步安装,了解
Weave Scope是Docker和Kubernetes的可视化和监视工具.它提供了自上而下的应用程序视图以及整个基础架构视图,并允许您实时诊断将分布式容器化应用程序部署到云提供商时遇到的任何问题. ...
- k3s部署全过程
# 安装k3s博客 ## 准备工作 1.准备俩台可以相互访问的服务器 2.需要先安装dockers 3.以下教程将使用VsCode+ssh插件来进行插件图 ssh连接到俩台服务器 点击打开ssh操作界 ...
- 关于HM NISEDIT在新版系统下编译并运行提示权限不足问题的解决方案
如果你使用过NSIS为你的项目制作过安装包,那HM nisedit一定是你绕不过去的槛,作为NSIS号称的最佳免费IDE/编辑器,功能齐全,与NSIS配合性能强悍,实至名归.只是开发作者最后版本更新在 ...
- activeMq不能被主机访问的问题
环境说明 主机:mac 虚拟机:VirtualBox 虚拟系统:Centos6.5 问题:虚拟机启动了 activemq. 也关闭了防火墙,但是在主机访问web界面,http://192.168.1. ...
- Kafka之安装
Kafka之安装 一.下载kafka 此博客只讲述kafka0.8和kafka1.0两个版本 更改kafka下的/home/bigdata/kafka/config/server.properties ...
- MySQL之安装(linux两种版本版本安装)
LinuxMySQL安装(Mysql5.5版本) 第一种 有安装包的安装方式 1.下载地址: http://dev.mysql.com/downloads/mysql 2.检查当前系统是否安装过mys ...
- do-while循环的使用
一.循环结构的4个要素 ① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 二.do-while循环结构: ①do{ ③; ④;}while(②); 执行过程: ...
- 学生管理系统(C语言简单实现)
仅供借鉴.仅供借鉴.仅供借鉴(整理了一下大一C语言每个章节的练习题.没得题目.只有程序了) 文章目录 1 .实训名称 2.实训目的及要求 3. 源码 4.实验小结 1 .实训名称 实训12:文件 2. ...