java 继承(下)

news/2024/12/23 6:29:52/

前面我们已经说明了什么是继承?继承的好处弊端等,不清楚的可参照链接 java 继承(上)-CSDN博客

本篇文章主要理解 继承中变量,构造方法,成员方法的访问特点。

1、继承中变量的访问特点

1.1 代码实现

不看结果,尝试看代码。看下是否知道输出的age是什么?

(1)Fu类的代码实现

public class Fu {int age = 40;
}

(2)Zi类的代码实现

public class Zi extends Fu{int height = 175;int age = 30;public void method(){int age = 20;System.out.println(height);System.out.println(age);}
}

(3)Test类的代码实现

public class Test {public static void main(String[] args) {Zi z = new Zi();z.method();}
}

(4)运行结果

1.2 上面运行结果分析,在子类方法中访问变量的次序,遵循“就近原则”,也就是会按下面的次序依次查找。

(1)子类局部范围找;

(2)子类成员范围找;

(3)父类成员范围找;

(4)如果都没有就报错(不考虑父亲的父亲...)。

2、继承中构造方法的访问特点

2.1 代码实现

(1)Fu类的代码实现

public class Fu{public Fu() {System.out.println("父类中无参构造方法被调用。。");}public Fu(int age) {System.out.println("父类中带参构造方法被调用。。");}
}

(2)Zi类的代码实现

public class Zi extends Fu{public Zi(){System.out.println("子类中无参构造方法被调用。。");}public Zi(int age){System.out.println("子类中带参构造方法被调用。。");}
}

2.2 代码分析

(1)通过Zi z = new Zi(); 去调用。

public class Test {public static void main(String[] args) {Zi z = new Zi();}
}

运行结果

特点:子类中所有的构造方法默认都会访问父类中无参的构造方法。

为什么呢?

  • 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。
  • 每一个子类构造方法的第一条语句默认都是:super(),也就是说下面的两个类是等价的。

(2)如果Fu类只有带参构造方法呢?

Fu类:

Zi类就会报错:

原因分析:这是因为父类中有了带参的构造方法的话,它会把无参构造方法覆盖掉,也就是说它就不会有默认的无参构造方法了。那怎么解决呢?很简单,给super加参数,调用父类的有参构造方法即可。

2.3 特点总结

(1)子类中所有的构造方法默认都会访问父类中无参的构造方法;

(2)如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?

        ① 通过使用super关键字去显示的调用父类的带参构造方法;

        ② 在父类中自己提供一个无参构造方法;

        ③ 推荐:自己给出无参构造方法。

3、继承中成员方法的访问特点

3.1 代码实现

(1)Fu类的代码实现

public class Fu {public void show() {System.out.println("父类的show方法被调用。。");}public void method() {System.out.println("父类的method方法被调用。。");}
}

(2)Zi类的代码实现

public class Zi extends Fu {public void method() {System.out.println("子类中method方法被调用。。");}
}

(3)Test类的代码实现

public class Test {public static void main(String[] args) {Zi z = new Zi();z.method();z.show();}
}

(4)运行结果

3.2 访问特点

通过子类对象访问一个方法过程:

(1)子类成员范围找

(2)父类成员范围找

(3)如果都没有就报错(不考虑父亲的父亲..)

如果想直接访问父类的方法可以通过super关键字。


 

本文为学习笔记,所参考文章均已附上链接,若有疑问请私信!

创作不易,如果对你有点帮助的话麻烦点个赞支持一下!

新手小白,欢迎留言指正!


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

相关文章

【项目经验】Redis Sentinel从工程中下线并对业务迁移-进行中

一、背景: 某天,接到DBA通知,Redis sentinel 只支持到3.2.X(这个命题有问题,往下翻,见彩蛋),为节省运维成本,提升运维效率,决定将工程中使用的Redis sentinel下线,都使用…

前端性能优化:防抖与节流

一、防抖和节流主要是干什么的 防抖和节流主要用于控制函数执行的频率,通过限制函数的触发次数,避免函数被过度调用而引发的性能问题或产生不必要的副作用。 二、防抖 什么是防抖: 防抖的原理是在函数频繁触发时,只执行最后一…

c语言:汽车时代

汽车时代 任务描述 据说看车牌可以知道车辆归属地点,已知黑龙江省车牌归属地的基本规则是: 黑A: 哈尔滨 黑B: 齐齐哈尔 黑C: 牡丹江 黑D: 佳木斯 黑E: 大庆 黑F: 伊春 黑G: 鸡西 黑H: 鹤岗 黑J: 双鸭山 黑K: 七台河 黑L: 松花江地区 黑M: 绥化 黑N: 黑…

爬虫基础:HTTP基本原理

爬虫基础:HTTP基本原理 前言HTTP基本原理URI 和 URLHTTP 和 HTTPSHTTP 请求过程请求与响应HTTP请求HTTP响应请求与响应的交互过程 HTTP 2.0二进制传输多路复用Header压缩服务器端提前响应内容安全 前言 了解 HTTP的基本原理,了解从往测览器中输人 URL到获…

【go语言开发】性能分析工具pprof使用

本文主要介绍如何在项目中使用pprof工具。首先简要介绍pprof工具的作用;然后介绍pprof的应用场景,主要分为工具型应用和服务型应用。最后数据分析项目,先采集项目信息,再可视化查看 文章目录 前言应用场景工具型应用服务型应用 数…

Django分页器

Django分页器 分页器前瞻之url urls.py不需要做修改 urlpatterns [path(test/, views.test,nametest), ]假设此时在原有的路径http://127.0.0.1:8000/app01/test后面添加/?page2 然后再后端获取到page def test(request):page request.GET.get(page)print(page) # 2retu…

有了std::thread,为什么还需要引入std::jthread?

C进阶专栏:http://t.csdnimg.cn/HGkeZ 目录 1.前言 2.std::is_invocable_v 3.std::jthread 3.1.构造函数 3.2.std::jthread无需join/detach使用实例 3.3.std::jthread处理外部请求中断实 3.4.处理中断请求示例代码 4.特性 5.总结 1.前言 C11以来提供了C原…

text-generation-webui大模型部署

1 简介 text-generation-webui是一个挺好用的大模型部署UI,提供了很多便于交互的接口,安装部署好之后将model放置到对应的位置即可在网页访问,若是在服务器部署也可以通过ssh端口转发至公网服务器进行访问。 其中,模型的下载可参…