java学习(面向对象基础)

一、继承(代码复用性)

继承可以解决代码复用,让我们的编程更加靠近人类思维,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends来声明继承父类即可。

继承的基本语法:class子类 extends 父类{}

1)子类就会自动拥有父类的属性和方法

2)父类又叫超类,基类

3)子类又叫派生类

以下是一个便于更好理解继承的例子

1)首先定义一个父类Student

package object;

public class Student {
    public String name;
    public int age ;
    public int rank;
    public double score;

    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setRank(int rank){
        this.rank=rank;
    }
    public void setScore(double score){
        this.score=score;
    }
}

2)定义pupil子类

package object;

public class pupil extends Student{
    public  void show() {
        System.out.println("小学生的信息为:");
        System.out.println(name+"\t"+age+"\t"+rank+"\t"+score+"\t");
    }
}

3)定义undergraduate子类

package object;

public class undergraduate extends Student{
    public void show(){
        System.out.println("该大学生信息为:");
        System.out.println(name+"\t"+age+"\t"+rank+"\t"+score+"\t");
    }
}

4)最后定义一个test1类进行操作

package object;

public class test1 {
    public static void main(String[] args) {
        pupil pupil1 =new pupil();
        pupil1.setName("小王");
        pupil1.setAge(10);
        pupil1.setRank(1);
        pupil1.setScore(99);
        pupil1.show();
        //输出结果为
        //小学生的信息为:
        //小王	10	1	99.0

        undergraduate n1 =new undergraduate();
        n1.setName("大王");
        n1.setAge(20);
        n1.setRank(1);
        n1.setScore(100);
        n1.show();
        //输出结果为:
        //该大学生信息为:
        //大王	20	1	100.0
    }
}

引入新知识:super关键字

a)含义:super代表父类的引用,用于访问父类的属性、方法、构造器

b)用以下例子来解释其三个特点:

//先定义一个父类
package object;

public class base {
    public int n1=100;
    protected int n2=200;
    int n3=300;
    private int n4=400;

    public void test1(){
    }
    protected void test2(){
    }

    void test3(){
    }
    private void test4()
    {
    }
}

1)访问父类的属性,但不能访问父类的private属性。

package object;

public class improve extends base{
    public void test(){
        System.out.println(super.n1);
        System.out.println(super.n2);
        System.out.println(super.n3);
        System.out.println(super.n4);//由于n4是私有的,所以不能进行访问。
    }
}

2)访问父类的方法,不能访问父类的private方法。

package object;

public class improve extends base{
    public void test(){
        super.test1();
        super.test2();
        super.test3();
        super.test4();//由于test4方法是私有的,所以不能进行访问。
    }
}

3)访问父类的构造器:super(参数列表),只能放在构造器的第一句,只能出现一句。

    public  improve(){
        super();//访问父类的无参构造器。
    }

c)super关键字的细节

1)调用父类的构造器的好处(分工明确,父类属性由父类初始化,子类的属性由子类初始化)

2)当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,使用super(在使用super找方法时,与this和直接访问不同,在调用方法时,没有查找本类这一步骤)、this、直接访问是一样的效果!

3)super的访问不局限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类中都有同名的成员,使用super访问遵循就近原则。

插入知识:调用某方法的顺序是:

(1)先找本类,如果有,则调用。

(2)如果没有,则找父类(如果有,并可以调用,则调用)。

(3)如果父类没有,则继续找父类的父类,直到object类。

提示:如果在查找方法的过程中找到了,但不能访问,则报错;如果在查找方法的过程中,没有找到,则提示方法不存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/368165.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实现无感刷新Token技术:.Net Web API与axios的完美结合

这是我之前分享在星球里面的课程,下面整理下,分享下这个无感刷新Token技术方案。 我们都知道Token是有设置有效期的,为了安全都不会设置过长的有效期;但设置有效期太短,又会导致经常需要重新登录。 这就需要无感刷新T…

Pyecharts炫酷散点图构建指南【第50篇—python:炫酷散点图】

文章目录 Pyecharts炫酷散点图构建指南引言安装Pyecharts基础散点图自定义散点图样式渐变散点图动态散点图高级标注散点图多系列散点图3D散点图时间轴散点图笛卡尔坐标系下的极坐标系散点图 总结: Pyecharts炫酷散点图构建指南 引言 在数据可视化领域,…

GPGPU面临的工程困境闲聊

作者:蒋志强 本人同意他人对我的文章引用,但请在引用时注明出处,谢谢.作者:蒋志强 0.前言 2007年作为GPGPU的工程界元年至今,已经发展了接近小二十年了。这个领域是如此的重要,几乎影响了工业…

MacBook Pro (15 英寸,2018) 本地体验运行 6B 大模型

接上篇 在 Mac 上加速 PyTorch 训练,准备完 MPS 环境之后,开始在本地体验 ChatGLM3-6B 模型。 一、下载本仓库: (base) markvivvMBP dev % git clone https://github.com/THUDM/ChatGLM3Cloning into ChatGLM3... remote: Enumerating obje…

[SWPUCTF 2021 新生赛]include

他让我们传入一个flag值 我们传入即可看到代码部分 传入一个php的伪类即可 得到经过Base64加密的flag,解密即可

jupyter notebook更改工作目录的2个细节

详细步骤参考知乎原文: 如何更改Jupyter Notebook的默认工作路径? - 知乎 (zhihu.com​​​​​​) 步骤4中需要删除 #符号和后面的空格!一定要删除空格,否则会出现语法错误的报错 步骤5中,经过评论区提醒后&#xf…

酷开系统 | 酷开科技智慧AI带你领略神奇的世界

在这个科技日新月异的时代,AI已成为我们生活中不可或缺的一部分。它不仅改变了我们的生活方式,更让我们对未来充满期待。说起酷开系统中智慧AI的强大,着实让人叹为观止。无论是语音识别、数据整理还是语言处理,智慧AI都在不断地突…

【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]

阅读导航 引言一、C语言的输入与输出二、流是什么三、CIO流1. C标准IO流(1)istream(2)ostream(3)iostream(4)cin 和 cout 2. C文件IO流(1)ifstream&#xff0…

如何在Windows部署GoLand并通过SSH远程连接Linux服务器

文章目录 1. 安装配置GoLand2. 服务器开启SSH服务3. GoLand本地服务器远程连接测试4. 安装cpolar内网穿透远程访问服务器端4.1 服务器端安装cpolar4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 本文主要介绍使用GoLand通过SSH远程连接服务器,并结合cpolar内…

1 初识JVM

JVM(Java Virtual Machine),也就是 “Java虚拟机”。 对于第三点功能:即时编译 常见的JVM 默认安装在JDK中的虚拟机为HotSpot:可以用“java -version”进行查看

网络时间协议NTP工作模式

单播服务器/客户端模式 单播服务器/客户端模式运行在同步子网中层数较高层上。这种模式下,需要预先知道服务器的IP地址。 客户端:运行在客户端模式的主机(简称客户端)定期向服务器端发送报文,报文中的Mode字段设置为3(客户端模式)。当客户端接收到应答报文时,客户端会…

RHCE 综合项目-博客

目录 业务需求 一、准备工作 1、配置静态IP 2、修改主机名及hosts映射 3、开启防火墙 4、时间同步 5、配置免密ssh登录 二、环境搭建 1、Server-web端安装LAMP环境软件 2、Server-NFS-DNS端上传博客软件 3、Server-NFS-DNS端设置NFS共享 三、Server-web设置 1、挂…

新手从零开始学习数学建模论文写作(美赛论文临时抱佛脚篇)

本文记录于数学建模老哥视频的学习过程中。b站视频:http://【【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训!】https://www.bilibili.com/video/BV1kC4y1a7Ee?p50&vd_sourceff53a726c62f94eda5f615bd4a62c458 目录…

四、Redis之配置文件

redis配置文件的名称 redis.conf 通过命令 find / -name redis.confvim redis.conf通过 : set nu 设置行号: set nonu 取消行号/关键字 搜索关键字: set noh 取消高亮选择4.1 Units 配置大小单位,开头定义了一些基本的度量单位,只支持 bytes&#…

多线程有三个必须要保证的特性,才能正常运行(三个特性是:有序性,可见性,原子性)JMM的作用就是保证这三个特征

有序性的原因,和保证措施(as-if-serial) JVM执行代码时,可能会优化编译器和优化CPU的性能发挥,所以会进行对 代码顺序调整。当然,此顺序会保证as-if-serial(也就是再怎么优化顺序,单…

Spring-mvc、Spring-boot中如何在调用同类方法时触发AOP

1. 问题描述 Spring-mvc和Spring-boot中aop可以实现代理的功能,我们可以借此实现事务和日志记录或者限流等多种操作。但是,如果你在一个方法中调用其同类下的其他方法的时候不会触发AOP。本文主要说明其原因及解决办法和实现原理。 2. 原因 AIOP的本质是…

网络编程套接字(3)

网络编程套接字 简单的TCP英译汉服务器地址转换函数字符串IP转整数IP整数IP转字符串IP关于inet_ntoa函数并发场景下的inet_ntoa函数绑定失败问题TCP协议通讯流程数据传输的过程数据交互四次挥手的过程端口连接 简单的TCP英译汉服务器 之前我们是以回调的方式处理任务的&#x…

下载、安装Jenkins

进入官网 下载Jenkins https://www.jenkins.io 直接点击Download 一般是下长期支持版 因为它是java写的,你要运行它(Jenkins.war)肯定要有java环境 有两种方式去运行它,一种是下载Tomcat(是很经典的java容器或者jav…

手写分布式存储系统v0.2版本

引言 上回说到 手写分布式存储系统v0.1版本 ,已经实现了通过监听TCP端口并将数据写到本地磁盘的功能,今天咱们就继续往上面添砖加瓦 v0.2版本大致做以下功能 实现滚动写文件 代码优化 一、滚动写文件实现 由于咱们写文件是用的mmap进行文件写入&am…

2024美赛B题Searching for Submersibles原创论文完整版

Searching for Submersibles搜索潜水器 2024美赛B题Searching for Submersibles原创论文(共38页)部分内容,其余见文末: 整体框架: 1.1 问题背景与问题重述 海上游轮迷你潜水艇公司(MCMS)&…