四月十九号java基础知识
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基础知识的更多相关文章
- 十九、Java基础--------IO流之字节流
在上一篇文章中介绍了IO体系以及一些基本概念和字符流的相关应用,本文着重介绍字节流的相关操作. 字节流 它的操作与字符流类似,可以参与字符流的定义.读取.写入.处理异常的格式,只不过是处理的数据不同, ...
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- java基础知识文章汇总
将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...
- Java基础知识陷阱系列
Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java 基础知识总结
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.数据类型: 数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte 8位 (by ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- Java 基础知识总结1
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.数据类型: 数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte 8位 (by ...
- java基础知识小小结
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- Python+Django(1)——建立项目
为项目新建一个目录,将其命名为learning_log,再在终端中切换到这个目录(Python 3): 运行模块venv 来创建一个名为ll_env的虚拟环境:python -m venv ll_en ...
- PLC入门笔记6
计数器指令及其应用 计数器指令介绍 很多场合需要进行计数操作.例如电机启动次数.生产线物料经过次数.位置传感器传送的脉冲次数等. 计数器分为普通和高速两种. 比PLC扫描频率远小于用普通,接近或大于用 ...
- js 获取鼠标位置的两种方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- elasticsearch第一天
启动 elasticsearch -d不能用以root用户启动 外网可访问在elasticsearch.yml中添加配置http.host: 0.0.0.0network.host: 0.0.0.0d ...
- 字符过滤流 对象流---->ObjectInputStream : 用法
1创建字输入节点流FileInputStram fis = new FileInputStream("读入的文件的路径");2创建对象输入过滤流 包装字节流ObjectInputS ...
- vue iview前端直接上传OSS
1. 首先安装oss npm install ali-oss --save 2. // template部分 <Upload ref="upload" type=" ...
- C++的weak_ptr
在以前的文章中,我们讲过C++的shared_ptr,利用它可以实现基于引用计数的指针回收,从而防止出现内存泄露. 但是事实上,即使是采用了shared_ptr,在存在循环引用的情况下其实仍然有可能会 ...
- centos /linux 修改目录或文件权限
修改目录权限chmod 777 /var/home/userid/cc 修改目录及子目录权限chmod -R 777 /var/home/userid/cc 修改文件权限chmod 777 index ...
- jmeter学习-性能指标、jmeter初识
一:性能测试的指标 1. 并发/并发数/并发用户数 狭义的并发:同一时间做相同的一件事 广义的并发:同一时间做不同事情,混合场景,对服务器来说的并发 性能测试,先做简单的狭义并发,在做广义并发:先做单 ...
- mysqld_safe Directory '/tmp/mysql' for UNIX socket file don't exists.
报错版本:mysql-5.7.35 1.报错完整提示信息: [root@localhost bin]# 2022-11-15T04:04:43.122905Z mysqld_safe Logging ...