大数据JAVA基础第十天

1.继承extends(也叫扩展)

引入

首先写两个类:

//定义学生类

class Student {

//成员变量

private String name;

private int age;

//空构造

public Student(){}

//getXxx()/setXxx()

public void eat() {

System.out.println("吃饭");

}

}

//定义教师类

class Teacher {

//成员变量

private String name;

private int age;

//空构造

public Teacher(){}

//getXxx()/setXxx()

public void eat() {

System.out.println("吃饭");

}

}

2.继承概述

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。

通过extends关键字可以实现类与类的继承,继承的格式如下:

class 子类名 extends 父类名 {}

单独的这个类,也就是被继承的类,称为父类,基类或者超类;这多个类称为子类或者派生类。

有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。

3.继承的案例和继承的好处

通过一个具体案例来演示代码

案例1:学生类和教师,定义两个功能(吃饭,睡觉)

案例2:加入人类后改进

/*

继承概述:

把多个类中相同的内容给提取出来定义到一个类中。

格式:

class 子类名 extends 父类名 {}

好处:

A:提高了代码的复用性

B:提高了代码的维护性

C:让类与类之间产生了关系,是多态的前提

*/

//使用继承前

/*

class Student {

public void eat() {

System.out.println("吃饭");

}

public void sleep() {

System.out.println("睡觉");

}

}

4.继承的好处

提高了代码的复用性

多个类相同的成员可以放到同一个类中

提高了代码的维护性

如果功能的代码需要修改,修改一处即可,继承的类中自动都被修改了

让类与类之间产生了关系,是多态的前提

5.Java中继承的特点

  • Java只支持单继承,不支持多继承。

即:一个类只能有一个直接父类,不可以有多个直接父类。

class SubDemo extends Demo{}           //ok

class SubDemo extends Demo1,Demo2...//error不能继承多个类

 

  • Java支持多层继承(继承体系)

class A{}

class B extends A{}

class C extends B{}

6.Java中继承的注意事项

子类只能继承父类所有非私有的成员(成员方法和成员变量)

子类不能继承父类的构造方法,但是可以通过super(后面讲)关键字去访问父类构造方法。

不要为了部分功能而去继承

我们到底在什么时候使用继承呢?

继承中类之间体现的是:"is a"的关系。

7.继承中成员变量的关系

案例演示

子父类中同名和不同名的成员变量

子类方法中寻找变量的顺序

类的组成:

成员变量:

构造方法:

成员方法:

而现在我们又讲解了继承,所以,我们就应该来考虑一下,类的组成部分的各自关系。

继承中成员变量的关系:

A:子类中的成员变量和父类中的成员变量名称不一样,这个太简单。

B:子类中的成员变量和父类中的成员变量名称一样,这会出现什么情况呢?

在子类方法中访问一个变量的查找顺序:

a:在子类方法的局部范围找,有就使用

b:在子类的成员范围找,有就使用

c:在父类的成员范围找,有就使用

d:如果还找不到,就报错。

8.结论

在子类方法中访问一个变量

首先在子类局部范围找,也就是方法内部

然后在子类成员范围找,也就是子类的成员变量

最后在父类成员变量范围找(肯定不能访问到父类局部范围)

如果还是没有就报错。

9.super关键字

super的用法和this很像

this   代表本类对象的引用

super  代表父类存储空间的标识(可以理解为父类对象的引用)

 

用法(this和super均可如下使用)

  • 访问成员变量

this.成员变量

super.成员变量(访问父类的成员变量,不能访问父类的private变量)

访问静态成员时,也可以用:父类名.静态成员

  • 访问构造方法(子父类的构造方法问题再讲)

this(…)       super(…)          //

  • 访问成员方法(子父类的成员方法问题再讲)

this.成员方法()     super.成员方法()

10.问题是:

我不仅仅要输出局部范围的num,还要输出本类成员范围的num。怎么办呢?

我还想要输出父类成员范围的num。怎么办呢?

如果有一个东西和this相似,但是可以直接访问父类的数据就好了。

恭喜你,这个关键字是存在的:super。

this和super的区别?

this代表本类对应的引用。

super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)

A:调用成员变量

this.成员变量 调用本类的成员变量

super.成员变量 调用父类的成员变量

B:调用构造方法

this(...)  调用本类的构造方法

super(...) 调用父类的构造方法

C:调用成员方法

this.成员方法 调用本类的成员方法

super.成员方法 调用父类的成员方法

时间: 2024-11-10 00:54:02

大数据JAVA基础第十天的相关文章

大数据JAVA基础第十四天

1.Java异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,输入值的范围,读取文件是否存在,网络是否始终保持通畅等等. 对于程序设计人员需要尽可能的预知所有可能发生的情况,尽可能的保证程序能在所有最糟糕的情况下都能运行. 但实际上,意外情况是不胜枚举的,程序可能发生的异常情况远远多于程序员所能考虑到的意外情况. Java的异常处理机制可以让程序具有良好的容错性,让程序更加健

大数据Java基础第十天作业

import java.util.List; import java.util.ArrayList; class ListDemo{          @SuppressWarnings(value="unchecked")     public static void main(String[] args){         List list = new ArrayList();         list.add(100);         list.add(new Integer

大数据Java基础第十五天作业

第一题:实现文件拆分.合并. import java.io.File; import java.io.RandomAccessFile; import java.io.FileOutputStream; import java.io.FileInputStream; import java.io.BufferedOutputStream; import java.io.BufferedInputStream; import java.util.List; import java.util.Arr

大数据Java基础第十五天、第十六天作业

使用Socket编写类似QQ通讯工具,显示屏幕的历史聊天记录待优化. import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; import java.awt.event

大数据Java基础第十六天、第十七天作业

使用Socket编写类似QQ通讯工具,显示屏幕的历史聊天记录待优化. import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; import java.awt.event

大数据Java基础第十九天作业

第一题:简单的URL获取资源下载 import java.net.URL; import java.net.URLConnection; import java.io.InputStream; import java.io.FileOutputStream; class DownloadDemo{     public static void main(String[] args){         String src_url = "http://one.jiangmin.com/jiangm

从0开始学大数据-Java基础-三元运算符/键盘录入(4)

我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop.Spark.Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习. 上一节了解Java运算符,其中三元运算符没有做讲解,本节我们开始学习Java基础-三元运算符/键盘录入,将会围绕以下几个知识点进行展开学习: 三元运算符 键盘录入数据 一.运算符 1.三元运算符 接着上一节的话题运算符,本节讲三元运算符,在讲三元运算符之前,可能会有很多朋友会问,是不是有一元运

从零开始学大数据-Java基础-switch语句(6)

我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop.Spark.Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习. 上一节学习了流程控制语句,本节学习switch语句. 开始之前,我们先看一下上节的练习题. 一.练习题 if语句格式的练习: 1.获取两个数据中较大的值 2.判断一个数据是奇数还是偶数,并输出 程序执行结果如下: 二.switch语句 流程控制语句的选择结构 1 选择结构(也被称为分支结构)

【全集】大数据Java基础

课程介绍 本课程是由猎豹移动大数据架构师,根据Java在公司大数据开发中的实际应用,精心设计和打磨的大数据必备Java课程.通过本课程的学习大数据新手能够少走弯路,以较短的时间系统掌握大数据开发必备语言Java,为后续大数据课程的学习奠定了坚实的语言基础. 适用人群 1.想学大数据没有语言基础的学员 2.想学大数据没有Java语言基础的学员 3.转行想学大数据的学员 4.了解Java,大数据Java知识体系不完整的学员 课程视频下载地址(视频完整,无加密) 链接:https://pan.baid