抽象类使用注意事项和细节|学习笔记

简介: 快速学习抽象类使用注意事项和细节。

开发者学堂课程【Scala 核心编程-基础抽象类使用注意事项和细节】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8980


抽象类使用注意事项和细节

 

目录:

一、抽象类的价值

二、抽象类的细节

 

一、抽象类的价值

在做开发的时候,很少有人用抽象类,用接口的比较多。觉得抽象类没有价值,但是实际上抽象类的价值更多的是在于设计。在开发中作为一个管理者,管五个程序员,五个程序员每个人都有自己编写代码的风格。管理时可以去抽象一个类,然后交给相关的开发人员,让他们用子类继承并实现。这样在一定程度上就可以去控制代码的一些规范,把控程序的一个结构。所以抽象的价值在于设计,更多是站在设计层面来使用这个抽象类。

 

二、抽象类的细节

1、细节1

抽象类不能实例化,跟 java 一样。java 抽象类也不能实例化。

例:

Object AbstractClassDetail01{

def main(args: Array[String]):Unit = {

//在进行实例化的时候,同时动态的将 say hello 进行实现。就相当于匿名之类。默认情况下一个抽象类是不能实例化的,但是实例化时动态的实现了抽象化的所有。

//抽象方法也可如下:

//var anlimal = new Animal03   会报错

var anlimal = new Animal03 {

override def sayHello(): Unti = {

println(say hello)

}

}

}

abstract class Animal03{

def sayHello()

}

2、细节2

抽象类不一定含有 abstract 方法。也就是说抽象类可以没有 abstract 方法。

写抽象类的细节描述问题。

例:先建一个 AbstractClassDetail01选择 object

Object AbstractClassDetail01{

def main(args: Array[String]):Unit = {

}

}

abstract class Animal02{

//在抽象类中可以有实现的方法

def sayHi ():Unit = {

println(xxx)

}

}

3、细节3

一旦类包含了抽象方法或者抽象属性,则该类必须声明为 abstract。

4、细节4

抽象方法不能有主体。

5、细节5

如果一个类继承的抽象类,则它必须实现抽象类所有抽象方法或抽象属性。

例:抽象属性

abstract class Animal03{

def sayHello()

var food:String

}

class Dog extends Animal03{//提示错误  把光标放在 alt 后面输入alt 加 enter 键,它会提示你。

override def sayHello():Unti = {  //override 可以拿掉

println(小狗汪汪叫”)

}

override var food:String=   //override 可以拿掉

}

这个时候 dog 就可以实际化了。实现了它的抽象方法和抽象属性,当然可以实际化。

6、细节6

抽象方法和抽象属性,不能用 private、 final 来修饰。因为这些关键字都跟重写或者实现相违背。假如一个方法是私有的,又是个抽象方法,谁来帮你实现,那必然是错的。

7、细节7

抽象方法可以有实现的方法

8、细节8

子类重写抽象方法不需要 override,写上也不会报错。

相关文章
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
590 0
|
机器学习/深度学习 存储 监控
实时特征处理框架:构建与应用实践
在大数据时代,实时特征处理框架成为数据驱动应用的核心组件。这些框架能够从海量数据中提取特征,并实时更新,为机器学习模型提供动力。本文将探讨实时特征框架的构建和生产实践,分享如何构建一个高效、稳定的实时特征处理系统。
272 2
IDEA创建多模块项目常用pom
IDEA创建多模块项目常用pom
535 8
|
人工智能 JavaScript Java
首批!通义灵码获信通院代码大模型评估最高评级
首批!通义灵码获信通院代码大模型评估最高评级
464 1
多重指针:深入解析、应用与示例
多重指针:深入解析、应用与示例
|
Rust Linux iOS开发
Rust 交叉编译 macOS 为 Linux 和 Windows
Rust 交叉编译 macOS 为 Linux 和 Windows
604 0
|
存储 Linux 数据安全/隐私保护
|
机器学习/深度学习 自然语言处理 安全
LLM系列 | 16: 构建端到端智能客服
本文将综合之前多篇文章搭建一个带评估功能的**端到端智能客服系统**。整体流程大致如下: 检查输入,看看用户输入的query是否能够通过审核API;抽取出商品和对应的类别;抽取出商品信息;模型根据商品信息回答用户问题;将模型的回复输入审核API对回复进行审核。
LLM系列 | 16: 构建端到端智能客服
|
存储 XML JSON
如何选择离线数据集成方案-全量&增量
如何选择数据离线集成方式,哪些表适合全量集成,哪些表适合增量集成
972 0
如何选择离线数据集成方案-全量&增量