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. 3月2号Android开发学习

    (2)视图基础 1.设置视图的高度 视图宽度通过属性Android:layout_width表达,视图高度通过属性android:layout_heigth表达,宽高的取值主要有以下三种 1.matc ...

  2. 2月23日javaweb之Maven

    Maven常用命令 compile:编译 clean:清理 test:测试 package:打包 install:安装 Maven生命周期 Maven对项目构建的生命周期描述是一次构建过程经历了多少个 ...

  3. python3GUI--200行代码写一个上课点名程序(附源码)

    @ 目录 一.准备工作 1.Tkinter 2.PIL 二.预览 1.启动 2.开始点名-顺序点名 3.开始点名-随机点名 4.手动加载人名单 5.开始点名-顺序点名-Pyqt5版本 6.人名单格式 ...

  4. Winform多线程访问UI控件问题

    Winform多线程无法访问UI控件,考虑使用委托方法解决.

  5. CSS 常用样式-字体属性

    字体类样式我们已经学习过字号font-size.字体font-family两个属性,接下来还有几个常用的字体属性. 粗细 font-weight: 作用:设置文字是否加粗显示. 属性名:font-we ...

  6. win 子系统导入centos7

    之前在应用商店安装过ubuntu的,有钱的建议从商店购买 window配置 , 准备一个centos系统,我是从已有系统导出的,导出命令 tar -cvf ./centos.tar ./ --excl ...

  7. Glass Beads

    UVA719 将循环串SSS展开成两倍大小:S+SS+SS+S,这样线性处理就可以处理所有循环的情况了.对S+SS+SS+S建立一个后缀自动机,让后从初始状态开始走,每次选择字典序最小的道路,走NNN ...

  8. vue中router.resolve

    resolve是router的一个方法, 返回路由地址的标准化版本.该方法适合编程式导航. let router = this.$router.resolve({ path: '/home', que ...

  9. GFF2GTF.py2

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

  10. C/C++ 数据结构使用数组实现队列的基本操作

    //使用数组实现队列 #include <iostream> #include <Windows.h> using namespace std; #define MAXSIZE ...