1.总括:类的继承是使用已有的类为基础派生出新的类。通过类继承的方式,便能开发出
新的类,而不需要编写相同的程序代码,所以说类的继承是程序代码再利用的概念
抽象与接口都是类概念的扩展。通过继承扩展出的子类,加上覆盖的应用,抽象类可以
一次创建并控制多个子类。接口则是JAVA语言里面实现多重继承的重要方法
2.类的声明通过extends关键字创建一个类的子类格式:
class Subclass extends Superclass{
.
.
.}
上述对象把Subclass声明为类Superclass的直接子类,如果Superclass又是某个类的子类,
则Subclass同时是该类的间接子类
3.子类的每个对象也都是其父类的对象,这是继承性的“即是”性质。也就是说Subclass
继承Superclass,则subclass即是Superclass,所以任何可以使用Superclass实例的地方
都允许使用Subclass实例,反之,则不然,父类对象不一定是它子类的对象
4.说明:
1)通过extends关键字,可将父类中的非私有成员继承给子类。
2)在java语言的继承中,执行子类的构造方法之前,会先调用父类中没有参数
的构造方法,其目的是为了要帮助继承自父类的成员做初始化操作
3)在严格意义上说,构造方法是不能被继承的,例如父类person有一个构造方法
person(String,int),不能说子类student也自动有一个构造方法Person(String,int)
但这并不意味着不能调用父的构造方法
5.调用父类中特定的构造方法:
如果父类中有多个构造方法时,如何才能调用父类中特定的构造方法呢?
做法就是在子类中通过super()语句调用父类特定的构造方法
6说明:
1).不管省略不省略子类有参构造中的super语句,则父类中的无参构造方法还会被调用
2).调用父类构造方法的super()语句必须写在子类构造方法中的第一行,否则编译会出现错误
3).在子类访问父类的构造方法,其格式为super(参数列表)。super可以重载,也就是说super
()会根据参数的个数和类型,执行父类相应的构造方法
4.Java程序中在执行子类的构造方法之前,如果没有用super()来调用父类中特定的构造方法
,则会先调用父类中没有参数的构造方法。因此在父类中只定义了有参数的构造方法 ,而在
子类的构造方法中有没有用super()来调用父类中特定的构造方法,则编译时会发生错误
有因为父类中找不到“没有参数的构造方法”可供执行。解决的办法是在父类中加上一个
“不做事”且没有参数的构造方法即可。如public Person(){}
5)super()与this()的功能相似,但super()是从子类的构造方法调用父类的构造方法,而this
()则是在同一个类内调用其他的构造方法。当构造方法有重载时,super()与this()均会根据
所给出的参数类型和个数,正确地执行相对应的构造方法
6).super()与this()均必须放在构造方法内的第一行,也就是这个原因,super()与this()无法同时
存在同一个构造方法内
7)与this关键字一样,super指的也是对象,所以super 同样不能在static环境中使用,包括
静态方法和静态初始化器(static语句块)
7.在子类中访问父类的成员:
在子类中使用super()不但可以访问父类的构造方法,还可以访问父类的成员变量和成员方法
但super不能访问子类添加的成员。在子类中访问父类的成员和方法的格式:
super.变量名
super.方法名
8.用Protected修饰的成员可以被该类自身,与它在同一个包中的其他类,在其他包中的该类的子类
三种类所引用。将成员声明为protected的最大好处就是可以同时兼顾安全性与便利性。
因为它只能供父类与子类或同一包中的类来访问 ,而其他类无法访问它
9.覆盖:覆盖与重载同属于多态,覆盖则是指子类中定义定义名称,参数个数与类型均与
父类中完全相同的方法,用以重写父类中同名方法的功能
10.覆盖父类的方法:
在子类定义父类已有的方法时,应保持与父类中完全相同的 方法头声明,即应与父类中
被覆盖的方法有完全相同的方法名、返回值类型和参数列表,否则就不是方法的覆盖
而在子类定义自己的与父类无关的方法,父类的方法未被覆盖,所以依然存在
也就是说子类继承父类所有被访问的成员方法时,如果子类的方法头与父类中的方法头
完全相同,则不能继承,此时子类的方法是覆盖的方法
11.子类中不能覆盖父类中声明为final或static的方法
12.注意:通过父类的对象访问子类的成员只限于“覆盖”的情况发生于。
也就是说父类与子类的方法名称、参数个数与类型必须完全相同,才可通过父类的对象
调用子类的方法。
13.创建父类类型的的变量指向子类对象。例如Person per = new Student("张三",23,"电子");
1)即将子类对象赋值给父类类型的变量,这种技术称为“向上转型”
2)由于向上转型是将子类的对象看作是父类对象,是从一个具体的类到一个较抽象的类,
所以它是安全的
3)“向下转换”就是将将抽象的类转换为比较具体的类。例如
Person per;
Student stu = new Person("张三",23,"电子");
4)当在程序中使用向下转换时,必须使用显性类型转换

总结:今天一天收获了跟类的继承相关的知识点,子类继承父类extends关键字连接

如果在父类中有无参构造,那么子类中继承不会报错

如果父类中没有无参构造,有有参构造 ,那么子类必须有与父类相关的有参构造

子类调用父类成员变量通过super语句,并且super语句必须放在子类构造方法的第一行

子类中访问父类成员变量和方法

super.name

super.setPerson

在子类中定义了与父类相同的的方法名,返回值以及参数列表时,子类的方法

会覆盖父类的方法

四月十九号java基础知识的更多相关文章

  1. 十九、Java基础--------IO流之字节流

    在上一篇文章中介绍了IO体系以及一些基本概念和字符流的相关应用,本文着重介绍字节流的相关操作. 字节流 它的操作与字符流类似,可以参与字符流的定义.读取.写入.处理异常的格式,只不过是处理的数据不同, ...

  2. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  3. java基础知识文章汇总

    将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...

  4. Java基础知识陷阱系列

    Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四 ...

  5. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  6. Java 基础知识总结

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  7. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  8. 毕向东—Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  9. Java 基础知识总结1

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.数据类型:  数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte  8位   (by ...

  10. java基础知识小小结

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. LeetCode刷题感想之滑动窗口

    发现滑动窗口也是一种经典解题思路,这一篇简单聊一下滑动窗口. 通常在碰到求XX子数组,子字符串,连续XX等题眼,可以考试用滑动窗口的思路来解决问题. 窗口的类型有几种: 1. 固定长度的窗口. 2. ...

  2. 初识 Linux Shell

    初识 Linux Shell 本书学习的第一步,就是要找到 Linux 终端的所在位置.目前较常见的图形化终端有 Konsole.Gnome terminal.xterm 等几种.一般安装后在各个发行 ...

  3. Vue系列---【.npmrc文件设置私服地址】

    一..npmrc 配置文件的优先级 电脑中有多个 .npmrc 文件,在我们安装包的时候,npm按照如下顺序读取这些配置文件 项目配置文件: /project/.npmrc 用户配置文件:~/.npm ...

  4. 字符节点流--> 桥装换流

    输出 存值 用法1创建字节输出节点流FileOutputStream fos = new FileOutputStream("存入文件的路径");2创建桥转换流,按照指定的字符编码 ...

  5. 解决Pycharm不能识别selenium的部分提示代码

    这是解决前,pycharm没有提示相关的webelement的代码,例如:send_keys, click 之类的 把鼠标指针放在 selenium 这个单词上就能看到这一串路径 然后找到这个路径的文 ...

  6. tf.keras.layers.MaxPool2D 简介

    tf.keras.layers.Max2D( pool_size=(2, 2), strides=None, padding='valid', data_format=None ) pool_size ...

  7. 树莓派 wiringPi的BCM与BOARD编码

    一.基础命令使用wiringPi库 1.1.获取管教信息 gpio readall ---获取管脚信息   1.2.BOARD编码和BCM一般都在python库中使用 import RPi.GPIO ...

  8. nextcloud file location

  9. GFF2GTF.py2

    import sys inFile = open(sys.argv[1],'r') for line in inFile: #skip comment lines that start with th ...

  10. 关于vmwork中centos7的虚拟机创建

    1.准备vmwork软件和centos7的镜像文件 vmwork软件下载地址https://www.vmware.com/cn/products/workstation-pro/workstation ...