实用的大数据教程系列之继承

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

大数据实用教程之继承,首先讲一下继承的基本概念

如果有多个类中有相同的特征和行为(属性和方法),并且这多个类之间从逻辑上讲是有一定的关联的。那么此时,我们可以将这些共同的部分单独写到一个类中。

Monkey: name, age, gender, walk(), sleep(), eat()

Tiger: name, age, gender, walk(), sleep(), eat()

Elephent: name, age, gender, walk(), sleep(), eat()

可以将上述三种类中,共同的部分提取出来

Animal: name, age, gender, walk(), sleep(), eat()

此时,被提取出的这个类,称作是–父类,基类,超类

具有相同特征的那些类,称作是–子类,派生类

从A类派生出B类:A是B的父类,B是A的子类

他们之间的关系,是 继承:子类继承自父类

关键字:extends

用来描述两个类之间的继承关系

class Monkey extends Animal {}
// Monkey继承自Animal
// Moneky是Animal的子类,Animal是Monkey的父类
继承中的特点
Java语言是单继承的,一个类只能有一个父类,一个类可以有多个子类

在某些语言中是支持多继承的。例如:C++、python…

但是在多继承中,会有一个问题:二义性。

虽然很多语言都抛弃了多继承,但是还是会用其他的方式来间接的实现类似多继承。

例如:在java中是用接口实现的。

Java中所有的类都直接或者简介的继承自 Object 类

子类可以访问到父类中能看的见的成员

能看得见的:访问权限

构造方法不能继承。

为什么要用继承?

为了降低代码冗余度

为了给一个类拓展功能。

如果某一个类给我们提供的功能不能满足我们的需求了,而且此时我们还不能修改这个类。那么我们要第一时间想到继承。

继承中的构造方法
一个对象在实例化的时候,需要先去实例化从父类继承到的成员

在实例化父类部分的时候,默认使用父类中的无参构造

问题:如果父类中没有无参构造,或者父类中的无参构造子类无法访问(使用private修饰无参构造),则此时子类对象无法完成实例化。

解决:

给父类中添加一个子类能够访问到的无参构造方法

在子类的构造方法中,手动调用父类中能够访问到的构造方法,来实例化父类部分

方法的重写
继承中最重要的一个知识点

重写,又叫做覆写,值得是对同样的一个方法,用子类的实现覆盖掉父类的实现。

@Override:

​ 是一个注解,常用在方法的重写中。表示在进行方法重写之前,进行一个验证。验证这个方法,到底是不是在重写父类中的方法。这个注解,可以添加,也可以不添加。但是,一般情况下,我们都是要加上去的

在重写的时候需要注意的问题:

访问权限问题:

​ 子类方法的访问权限不能比父类方法中的访问权限低,要大于等于父类方法的访问权限

​ public > protected > default > private

关于返回值类型:在重写的时候,要求方法名和参数必须和父类中方法相同

​ 子类方法的返回值类型可以和父类方法中返回值类型相同。也可以是父类方法中返回值类型的子类型。

关于异常的抛出。

final关键字

修饰 意义
变量 这个变量的值不能改变,就是常量
类 表示是一个最终类,这个类无法被继承
方法 表示是一个最终方法,这个方法无法被重写
super关键字的使用
super表示对父类的引用。

用在构造方法中,可以使用super()调用父类的构造方法
在普通的方法中可以调用父类的方法
访问权限修饰符
用来描述一个类、方法、属性、接口、枚举…能够被访问到的一个范围

访问权限一共有四种:

公开(public)

保护(protected)

包(default / package)

私有(private)

public > protected > default > private

对应的访问权限修饰符一共有三个:

public、protected、private

注:包权限没有访问权限修饰符,如果一个方法、属性、类…没有使用任意的访问权限修饰符来修饰,那么他的访问权限就是包权限

访问权限 可以修饰什么 可以访问的范围
private 类成员 只能在当前的类中访问
default 类成员、类 只能在当前的包中进行访问
protected 类成员 可以在当前的包中访问,也可以在跨包的子类中访问
public 类成员、类 可以在项目中任意的位置进行访问
Object类
Object这个类是所有类的父类,在Java中,所有的类都直接或者间接的继承自Object类

在Object类中,定义了一些我们比较常用的方法。

/**

  • 返回一个对象的字符串表示形式。
  • 这个方法,在一个对象需要转型成字符串类型的时候,自动调用
  • 例如:在控制台输出、和字符串做拼接
    */

public String toString() {

return "";

}

/**

  • 获取一个对象的类型(Class对象)
    */

public Class<?> getClass();

/**

  • 用来比较两个对象是否相同的,在Object类中,默认还是比较两个对象的地址
  • 可以重写equals,实现自己的比较的规则
  • 1、如果other是null,返回结果一定是false
  • 2、如果this == other,返回结果一定是true
  • 3、如果this和other的类型不同,返回结果一定是false
  • 4、如果x.equals(y) == true,那么 y.equals(x) 一定也得是true
  • 5、如果x.equals(y) == true, y.equals(z) == true, 那么 x.equals(z) 一定也得是true
    *
  • 如果两个对象用来比较是否相同,尽量使用equals来比较。
  • 如果两个基本数据类型是否相同,不要使用equals,直接使用==即可
    */

public boolean equals(Object other) {

return (this == other);

}

/**

  • 获取一个对象的哈希码、散列码。
  • 如果在一个对象没有在一个散列序列中的话,没有任何作用。
  • 但是,如果一个对象是存储在一个散列序列中,这个方法有大作用。
  • 散列序列: HashSet、HashMap...
    */

public int hashCode() ;

/**

  • 析构方法
  • 在实例化一个对象的时候,会执行构造方法。当这个对象被销毁之前,会执行这个析构方法。
    */

protected void finalize() throws Throwable { }

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
5月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【7月更文挑战第22天】在大数据领域,Python算法效率至关重要。本文深入解析时间与空间复杂度,用大O表示法衡量执行时间和存储需求。通过冒泡排序(O(n^2)时间,O(1)空间)与快速排序(平均O(n log n)时间,O(log n)空间)实例,展示Python代码实现与复杂度分析。策略包括算法适配、分治法应用及空间换取时间优化。掌握这些,可提升大数据处理能力,持续学习实践是关键。
129 1
|
6月前
|
Java 大数据 API
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
153 0
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
|
6月前
|
分布式计算 Hadoop 大数据
【大数据】Hadoop下载安装及伪分布式集群搭建教程
【大数据】Hadoop下载安装及伪分布式集群搭建教程
265 0
|
机器学习/深度学习 人工智能 算法
实用!50个大厂、987页大数据、算法项目落地经验教程合集
大数据、算法项目在任何大厂无论是面试还是工作运用都是非常广泛的,我们精选了50个百度、腾讯、阿里等大厂的大数据、算法落地经验甩给大家,千万不要做收藏党哦,空闲时间记得随时看看! 如果你没有大厂项目经验,对大厂算法、大数据的项目运用不了解建议你看看!
|
分布式计算 Hadoop 大数据
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(下)
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(下)
257 0
|
SQL 存储 缓存
大数据量、高并发业务优化教程(一)
大数据量、高并发业务优化教程(一)
505 0
|
分布式计算 运维 Hadoop
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(上)
大数据 | Hadoop HA高可用搭建保姆级教程(大二学长的万字笔记)(上)
483 0
|
7月前
|
SQL canal 大数据
实践教程之将PolarDB-X与大数据等系统互通
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
实践教程之将PolarDB-X与大数据等系统互通
|
SQL canal 弹性计算
实践教程之如何将PolarDB-X与大数据等系统互通
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
实践教程之如何将PolarDB-X与大数据等系统互通
|
大数据 Python
2022年最新Python大数据之Python基础【九】面向对象与继承
一般实例属性写在实例方法中,调用该方法才能获取实例属性,对象创建后,其中一个实例调用该方法,获取实例属性,其余对象不发生变化
76 0