IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java中关于继承与多态需要注意的点(学习笔记) -> 正文阅读

[Java知识库]Java中关于继承与多态需要注意的点(学习笔记)

  1. 在Java中,子类本身新定义的成员变量如果与从父类的继承的成员变量名字相同(不同数据类型也算),那么父类的从父类继承的同名变量将被隐藏,不能直接操作,需要通过从父类中继承的方法来操作这个被隐藏的变量。

  2. 子类对父类所继承的方法进行重写时,方法的名字、参数列表必须完全相同,但是返回值类型可以与父类相同,也可以时父类此方法返回值的子孙类。比如:
    父类的方法返回值为People,子类重写的该方法返回值可以是Student(Student是People的子孙类)。

  3. 重写和重载的区别:
    重载只需要保证参数列表不同,名字相同,不管返回值是否相同,都属于重载。
    而重写的返回值见上述第2点,名字与参数列表都必须与父类相同。

  4. 使用super关键字可以在子类中操作被隐藏的父类成员变量调用被隐藏的父类方法,注意只能在方法中使用super,表示调用隐藏的内容,不能用某个实例对象使用super,此时super.f()中的f()函数为被隐藏的函数,函数f()里的成员变量及方法即使子类中有覆盖,在该f()函数中使用的都是被覆盖的那一部分。

  5. 在子类的每一个构造方法中必须在最开头用super关键字调用父类的某个构造函数,因为子类在创建对象时总是会先调用父类的构造方法,再调用自己的没有写的情况只有一种:父类有无参构造函数时,系统会为子类的开头默认调用super()。

  6. 假设People的子类为Student;

 People p = new Student();

称p为Student的上转型对象,上转型对象可以操作被继承或被隐藏的成员变量,也可以调用被继承或重写的方法,但不能操作和调用子类中新增的变量和方法;而且调用含有重写的方法时,调用的是重写后的方法。
把上转型对象强制转化为子类对象的方法:

Student s = (Student) p;
  1. 抽象类可以多重继承,即一个抽象类B继承抽象类A,此时,A中的抽象方法可以不给出实现,也可以改为非抽象方法,给出实现。
  2. 抽象方法不能用static修饰;抽象类不可以new一个对象,但可以创建子类的上转型对象。
  3. 对于父类的protected变量和方法的继承性:在一个Test.java文件中创建一个A类的子孙类B类的对象时,B类新声明的变量和方法在B类与Test类在同一包时能够访问;对于A类中的protected变量和方法也是在A类和Test类在同一包中时能够访问。
  4. 子类不能重写父类中的静态方法,但是可以声明覆盖父类中的成员变量,而且子类可以正常访问和继承父类中的静态变量和方法;
    虽然不能重写静态方法,但是可以重新声明这个静态方法;
    @Override关键字下面的方法必须为重写方法,即如果子类中把父类中的静态方法除了方法体中的内容复制下来,再“重新写”这个方法体,这种操作的前面如果不加@Override,默认表示重新声明该方法,如果加了@Override,则表示重写该方法,所以静态方法可以通过不加@Override来重新声明一个静态方法来达到我们想要的“继承效果”。
    需要注意的是重新声明的方法由于不是重写的方法,所以当该父类的一个上转型对象调用这个重新声明的方法时,调用的是父类中、重新声明前的方法。
  5. abstract方法不能用static修饰的原因是:上面一点提到子类不能重写父类中的static方法,而abstract方法存在就是要被其子孙类重写的,所以有冲突,final和private道理也一样。
  6. 对于重写只能降低访问权限可以这样理解:别人需要访问这个父类,肯定需要先访问你的子类,再通过子类访问父类,这是“逐层”的关系,如果子类访问权限更“隐蔽”,就会导致不可能访问得到这个父类,所以。
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 11:51:51  更:2021-08-07 11:52:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 0:36:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码