谈谈java继承与多态

news/2024/11/27 2:12:48/

目录

继承

1.为什么要继承

2.继承的概念

3.继承的语法

4.子类与父类访问

super的用法

多态

1.满足条件

2.体现

3.重写

3.向上转型

4.向下转型


继承

1.为什么要继承

我们的对象不止一个,但是ta们可能有相同的部分,为了将这些共性抽取,实现代码复用提出了继承的概念。

2.继承的概念

一个类继承另一个类,实现共性的抽取与实现代码复用。

3.继承的语法

修饰符 class子类 extends 父类 {//...}

例如:我们有一个Animal类,让一个Dog类继承它,Dog中能使用父类的成员与方法

//Animal.java
public class Animal {String name;int age;public void eat(){System.out.println(name + "正在吃饭");}public void sleep(){System.out.println(name + "正在睡觉");}}//Animal.javaclass Dog extends Animal {void bark(){System.out.println(name + "汪汪汪~~~");}
}//TestExtend.javapublic class TestExtend {public static void main(String[] args) {Dog dog = new Dog();// dog类中并没有定义任何成员变量,name和age属性肯定是从父类Animal中继承下来的System.out.println(dog.name);System.out.println(dog.age);// dog访问的eat()和sleep()方法也是从Animal中继承下来的dog.eat();dog.sleep();dog.bark();}}

4.子类与父类访问

(1)当子类与父类有同名的成员变量时,在子类中访问这个变量时,优先访问子类自己的。

(2)要是访问与子类同名的父类中的成员变量时,需要用super(下面将super的用法)

(3)子类对象构造时,得先调用父类构造方法

注意:

1. 若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的super()调用,即调用父类构造方法
2. 如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。
3. 在子类构造方法中,super(...)调用父类构造时,必须是子类构造函数中第一条语句。
4. super(...)只能在子类构造方法中出现一次,并且不能和this同时出现

super的用法

  (1)   调用父类实例变量

(2)调用父类方法

(3)super()调用父类构造函数

  (4)   必须位于方法的第一行,不能与this()同时存在,this父类和子类都能访问,super只能访父类的

(5)只能在类的非静态方法中使用,用来访问非静态成员方法和字段

多态

1.满足条件

1. 必须在继承体系下

2. 子类必须要对父类中方法进行重写

3. 通过父类的引用调用重写的方法

2.体现

降低代码的圈复杂度。

在代码运行时,当传递不同类对象时,会调用对应类中的方法。

3.重写

(1)方法名相同(下面讲特例)

(2)参数列表相同

(3)返回值相同

注意:

1.被private,static,final 修饰的类不能被重写

2.访问修饰限定符子类中重写的方法必须比父类范围大

   private < 默认权限 < protected < public

3.方法名可以不同时,必须是父子类关系

4.构造方法不能被重写

3.向上转型

语法格式:父类类型 对象名 = new 子类类型

(1)直接赋值

(2)方法传参的方式

(3)返回值

4.向下转型

语法格式: 子类类型 对象名 = (子类类型)父类


 


http://www.ppmy.cn/news/61855.html

相关文章

为什么软件iic需要用开漏输出和上拉电阻

1、疑惑&#xff1a; 不知道大家有没有这种疑惑&#xff0c;在软件iic的配置过程当中&#xff0c;有些时候要输出高低电平&#xff0c;为什么使用开漏输出而不是推挽输出&#xff1f; 2.推挽输出和开漏输出的区别 推挽输出: 输出逻辑0&#xff0c;则N-MOS激活&#xff1b;输…

网站没有备案对seo有什么副作用

1、服务器地理位置 随着百度算法的不断提升&#xff0c;百度搜索结果逐渐从千人一面&#xff0c;转向千人千面&#xff0c;简单的理解就是&#xff0c;早期&#xff0c;你在百度检索一个特定关键词&#xff0c;那么基于所有地理位置的反馈结果都一样。 而随着技术的更迭&…

让ChatGPT猜你喜欢——ChatGPT后面的推荐系统

Chat GPT的大热&#xff0c;让人们的视线又一次聚焦于“人工智能”领域。通过与用户持续对话的形式&#xff0c;更加丰富的数据会不断滚动“雪球”&#xff0c;让Chat GPT的回答变得越来越智能&#xff0c;越来越接近用户最想要的答案。ChatGPT能否颠覆当下的推荐系统范式&…

AIGC产业研究报告 2023——图像生成篇

易观&#xff1a;今年以来&#xff0c;随着人工智能技术不断实现突破迭代&#xff0c;生成式AI的话题多次成为热门&#xff0c;而人工智能内容生成&#xff08;AIGC&#xff09;的产业发展、市场反应与相应监管要求也受到了广泛关注。为了更好地探寻其在各行业落地应用的可行性…

软考中级工程师笔记(持续更新)

进制 正负0 -0原000110010000 1000反000111100000 1111补000111110000 0000 取值范围 原 -(2n-1)-1~(2n-1)-1 数量 [(2n-1)-1]-[-(2n-1)-1] 1(1代表0)(2*2n-1)-1**2n-1** 反 -(2n-1)-1~(2n-1)-1 数量 [(2n-1)-1]-[-(2n-1)-1] 1(1代表0)(2*2n-1)-1**2n-1** 补 -(2n-1)~(2n-…

聊聊我在阿里第一年375晋升的心得

前言 思来想去&#xff0c;觉得这个事情除了领导赏识大佬抬爱之外&#xff0c;还是挺不容易的&#xff0c;主观认为有一定的参考价值&#xff0c;然后也是复盘一下&#xff0c;继续完善自己。 绩效 首先晋升的条件就是要有个好绩效&#xff0c;那么我们就先基于绩效这个维度…

QProgressBar详解

QProgressBar详解 [1] QProgressBar详解1.QProgressBar简述2.常用方法3.示例&#xff0c;比较进度条4.设置样式表 [1] QProgressBar详解 原文链接&#xff1a;https://blog.csdn.net/wzz953200463/article/details/125530997 1.QProgressBar简述 QProgressBar提供了一个水平…

Lecture 11:How versatile are self-supervised models

目录 Story 1: Cross-lingual Story 2: Cross-discipline Story 3: Pre-training with artificial data &#xff08;story1和story2的内容在前面课程中有讲过&#xff0c;这里笔记部分不再详述&#xff09; Story 1: Cross-lingual 多语言BERT具有跨语言的能力&#xff0…