JAVA.4.继承

news2024/9/24 9:21:47

1.特点

java只支持单继承,一个儿子继承一个父亲

但可以多层继承,a继承b,b继承c

b是a的直接父类,c是a的间接父类

每个类都直接或者简介继承Object,不写继承就默认继承它

2.注意事项

构造方法

父类的构造方法,子类不能继承,要再写一遍

比较表面的理解:因为构造方法和父类的名字相同,那你子类的构造方法名字也必须和子类的名字相同,你子类继承父类的构造方法,名字是父类的,名字就不能和子类一样了,所以就不能继承。

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.hobby();


    }

}

class fu{
    String name="fu";
    public fu(){
        System.out.println("fu的无参构造");
    }
    public fu(String name){
        this.name=name;
        System.out.println("fu的有参构造");
    }

    public void hobby(){
        System.out.println("喝茶");
    }
}
class zi extends fu{
    String name="zi";

@Override    //重写的标记
    public void hobby(){
        System.out.println("打游戏");
    }
}

一开始就打印fu的无参构造,说明一开始会自动super();

也可以在子类的构造方法中super父类的构造方法

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.hobby();


    }

}

class fu{
    String name="fu";
    public fu(){
        System.out.println("fu的无参构造");
    }
    public fu(String name){
        this.name=name;
        System.out.println("fu的有参构造");
    }

    public void hobby(){
        System.out.println("喝茶");
    }
}
class zi extends fu{
    public zi(){
        super("jack");
        System.out.println("使用了zi的无参构造");
    }
@Override    //重写的标记
    public void hobby(){
        System.out.println("打游戏");
    }
}

也可以自己写子类的有参构造

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi("leo");
        z.hobby();


    }

}

class fu{
    String name="fu";
    public fu(){
        System.out.println("fu的无参构造");
    }
    public fu(String name){
        this.name=name;
        System.out.println("fu的有参构造");
    }

    public void hobby(){
        System.out.println("喝茶");
    }
}
class zi extends fu{
   
    public zi(){

        System.out.println("使用了zi的无参构造");
    }
    public zi(String name){
        System.out.println("使用了zi的有参构造");
        this.name=name;

    }
@Override    //重写的标记
    public void hobby(){
        System.out.println(this.name+"打游戏");
    }
}

成员变量

不管私有非私有的成员变量都可以继承,但是私有的成员变量不能被直接调用,要用其他的方法

比如说getname()方法

一般:就近原则,谁离得近就用谁

先在局部找,再在子类找,然后在父类找

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.zishow();


    }

}

class fu{
    String name="fu";
}
class zi extends fu{
    String name="zi";

    public void zishow(){
        String name="zishow";
        System.out.println(name);
    }
}

在此,String name="zishow";比较近,所以是zishow

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.zishow();


    }

}

class fu{
    String name="fu";
}
class zi extends fu{
    String name="zi";

    public void zishow(){
        //String name="zishow";
        System.out.println(name);
    }
}

在此,String name="zi";比较近,所以是zi

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.zishow();


    }

}

class fu{
    String name="fu";
}
class zi extends fu{
    //String name="zi";

    public void zishow(){
        //String name="zishow";
        System.out.println(name);
    }
}

在此,String name="fu";比较近,所以是fu

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.zishow();


    }

}

class fu{
    String name="fu";
}
class zi extends fu{
    String name="zi";

    public void zishow(){
        String name="zishow";
        //就近原则
        System.out.println(name);
        //使用this,说明是这个类的
        System.out.println(this.name);
        //使用super,说明是父类的
        System.out.println(super.name);
    }
}

成员方法

父类中   非private    非static   非final   是存在虚方法表中,子类可以直接找到,可以直接继承

其他没被继承的,不代表不能用。

方法的重写

当父类的方法不能满足子类时,子类可以将继承父类的方法进行重写

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.hobby();


    }

}

class fu{
    String name="fu";

    public void hobby(){
        System.out.println("喝茶");
    }
}
class zi extends fu{
    String name="zi";

    public void zishow(){
        String name="zishow";

    }

}

重写后

@Override    //重写的标记

告诉虚拟机,你在重写方法,而不是重新写一个新的方法

package a01static;

public class StudentTest {

    public static void main(String[] args) {
        zi z = new zi();
        z.hobby();


    }

}

class fu{
    String name="fu";

    public void hobby(){
        System.out.println("喝茶");
    }
}
class zi extends fu{
    String name="zi";

    public void zishow(){
        String name="zishow";

    }
@Override    //重写的标记
    public void hobby(){
        System.out.println("打游戏");
    }
}

3.带有继承机构的标准javabean类案例

代码结构

employee.java

package employeepakage;

public class employee {
    String number;
    String name;
    String salary;

    public employee(String number, String name, String salary) {
        this.number = number;
        this.name = name;
        this.salary = salary;
    }
    public employee(){

    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSalary() {
        return salary;
    }

    public void setSalary(String salary) {
        this.salary = salary;
    }

    public void word(){
        System.out.println("正在工作");
    }
    public void eat(){
        System.out.println("在吃饭");
    }

    @Override
    public String toString() {
        return "employee{" +
                "number='" + number + '\'' +
                ", name='" + name + '\'' +
                ", salary='" + salary + '\'' +
                '}';
    }
}

manager.java

package employeepakage;

public class manager extends employee {
    double bouns;
    public manager(){

    }

    public manager(String number, String name, String salary, double bouns) {
        super(number, name, salary);
        this.bouns = bouns;
    }
    public double getBouns() {
        return bouns;
    }
    public void setBouns(double bouns) {
        this.bouns = bouns;
    }
    @Override
    public void word(){
        System.out.println("管理人员");
    }

    @Override
    public String toString() {
        return "manager{" +
                "bouns=" + bouns +
                ", number='" + number + '\'' +
                ", name='" + name + '\'' +
                ", salary='" + salary + '\'' +
                '}';
    }
}

cooker.java

package employeepakage;

public class cooker extends employee{
    public cooker(){

    }

    public cooker(String number, String name, String salary) {
        super(number, name, salary);
    }
    @Override
    public void word(){
        System.out.println("炒菜");
    }

    @Override
    public String toString() {
        return "cooker{" +
                "number='" + number + '\'' +
                ", name='" + name + '\'' +
                ", salary='" + salary + '\'' +
                '}';
    }
}

Test.java

package employeepakage;

public class Test {
    public static void main(String[] args) {
        manager m = new manager("001","jack","8000",1000);
        m.word();
        m.eat();
        System.out.println(m.toString());
        cooker c=new cooker("002","amy","5000");
        c.word();
        c.eat();
        System.out.println(c.toString());
    }
}

运行结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生成式 AI 的发展方向:Chat 还是 Agent?

生成式 AI 的发展方向,是 Chat 还是 Agent? 随着生成式 AI 技术的不断进步,关于其未来发展方向的讨论也愈发激烈。究竟生成式 AI 的未来是在对话系统(Chat)中展现智慧,还是在自主代理(Agent&am…

GO内存分配详解

文章目录 GO内存分配详解一. 物理内存(Physical Memory)和虚拟内存(Virtual Memory)二. 内存分配器三. TCMalloc线程内存(thread memory)页堆(page heap)四. Go内存分配器mspanmcachemcentralmheap五. 对象分配流程六. Go虚拟内存ArenaGO内存分配详解 这篇文章中我将抽丝剥茧,…

LINUX之MMC子系统分析

目录 1. 概念1.1 MMC卡1.2 SD卡1.3 SDIO 2. 总线协议2.1 协议2.2 一般协议2.3 写数据2.4 读数据2.5 卡模式2.5.1 SD卡模式2.5.2 eMMC模式 2.6 命令2.6.1 命令类2.6.2 详细命令 2.7 应答2.8 寄存器2.8.1 OCR2.8.2 CID2.8.3 CSD2.8.4 RCA2.8.5 扩展CSD 3. 关键结构3.1 struct sdh…

Llama 3.1要来啦?!测试性能战胜GPT-4o

哎呀,Meta声称将于今晚发布的Llama 3.1,数小时前就在Hugging Face上泄露出来了?泄露的人很有可能是Meta员工? 还是先来看泄露出来的llama3.1吧。新的Llama 3.1模型包括8B、70B、405B三个版本。 而经过网友测试,该base…

K8s 核心组件——API Server

1. Kubernetes API Server 概述 1.1 基本概念 Kubernetes API Server(API Server)是 Kubernetes 的核心组件之一,负责暴露 Kubernetes API 给用户和客户端,接收和处理来自客户端的请求,并将其存储到 etcd 中。Kubern…

Unity3D之TextMeshPro使用

文章目录 1. TextMeshPro简介2. TextMeshPro创建3. TextMeshPro脚本中调用4. TextMeshPro字体设置及中文支持过程中出现的一些问题 1. TextMeshPro简介 【官网文档】https://docs.unity.cn/cn/2020.3/Manual/com.unity.textmeshpro.html TextMeshPro 是 Unity 的最终文本解决…

java 集合框架-collection(单列集合)

在编程语言中,我们必然少不了存储数据的容器,虽然我们有数组,但是数组是连续的开辟处一块连续的内存空间,如果数据过大会无法存储完,数据量小,会浪费空间,所以我们需要使用集合存储数据&#xf…

Qt创建自定义组件并且promote to之后导致编译错误(CMake)

创建自定组件并且加入到全局(勾选"Global include"选项)后,重新编译,元对象编译器生成的ui_xxxx.h文件中会新加入自定义组件的头文件: 如图所示,编译器提示找不到自定义组件的头文件: Solution: 在CMakeL…

leetcode日记(48)排列序列

这道题想到了规律就不算难&#xff0c;列了好几个示例想出的规律&#xff0c;试着排序几个就会了 class Solution { public:string getPermutation(int n, int k) {string result;int m1;int i1;for(i;i<n;i) m*i;i--;int pm/i;string s;for(int j0;j<n;j) s.append(to_…

NCRE3 2-1 网络总体设计基本方法

这部分记忆的比较多 概览 设计网络建设总体目标确定网络系统方案设计原则网络系统总体设计设计网络拓扑结构进行网络设备选型网络系统安全设计 设计网络建设总体目标 这部分视频没说到 确定网络系统方案设计原则 这部分视频没说到 网络系统总体设计 核心层网络结构设计 …

“机器说人话”-AI 时代的物联网

万物互联的物联网愿景已经提了许多年了&#xff0c;但是实际效果并不理想&#xff0c;除了某些厂商自己的产品生态中的产品实现了互联之外&#xff0c;就连手机控制空调&#xff0c;电视机和调光灯都没有实现。感觉小米做的好一点&#xff0c;而华为的鸿蒙的全场景&#xff0c;…

以flask为后端的博客项目——星云小窝

以flask为后端的博客项目——星云小窝 文章目录 以flask为后端的博客项目——星云小窝前言一、星云小窝项目——项目介绍&#xff08;一&#xff09;二、星云小窝项目——项目启动&#xff08;二&#xff09;三、星云小窝项目——项目结构&#xff08;三&#xff09;四、谈论一…

singleton 配置

​​​​​​​Is there a way to connect to a specific instance of Oracle server?https://stackoverflow.com/questions/70617760/is-there-a-way-to-connect-to-a-specific-instance-of-oracle-server 1.。。。。。。。。。。。RAC下 通过instance name 控制&#xff0c;…

react中配置路径别名@

1.说明 在react项目中想要使用代替“src/”需要在项目根目录下配置两个文件&#xff0c;craco.config.js和sconfig.json&#xff1b; craco.config.js配置文件是用于项目解读为“src/” jsconfig.json配置文件是用于vsCode在编辑过程是输入后可以将src下的文件目录进行自动联…

PS启动提示Adobe Creative Cloud丢失或损坏。您可以尝试修复来解决这个问题,如何解决

一般为找到这个路径下C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS的Adobe Desktop Service.exe文件。如果不在C盘也可以直接搜索其他盘找到此文件。 直接删除此文件即可解决&#xff0c;如果删除不了可以进任务管理器先结束进程再删除。鼠标右键结束任…

npm上传自己的包以及发布过程遇到的问题

大家好&#xff0c;我是前端追寻路上的【酱酱仔】 作为在前端领域不断探索的一员&#xff0c;在此记录开发中遇到的问题&#xff0c;如果你也遇到了相同的问题&#xff0c;希望本文对你有帮助。 前提&#xff1a;本文涉及的命令都是在要发布的包的根目录下执行的&#xff0c;在…

自训练和增量训练word2vec模型

1、自己准备训练语料文件 根据自己的业务场景准备训练数据&#xff0c;比如用户在商城上的同购行为序列或同浏览行为序列。 我们希望通过自己训练业务相关的语料word2vec模型来获得词嵌入、词相关性查询等。 1.1 准备语料库文件 # 示例&#xff1a;准备自己的一个大规模的语…

学习记录day16—— 数据结构 双向链表 循环链表

双向链表 1、概念 1&#xff09;就是从任意一个节点既能存储其前驱节点&#xff0c;又能存储后继节点 2)结构体中增加一个指向前驱节点的指针 //定义数据类型 typedef int datatype;//定义节点类型 typedef struct Node {union {int len;datatype data;};struct Node *prio; …

k8s中部署Jenkins、SonarQube、StorageClass部署流程

部署Jenkins 系统环境&#xff1a; • kubernetes 版本&#xff1a;1.23.3 • jenkins 版本&#xff1a;2.172 • jenkins 部署示例文件 Github 地址&#xff1a;https://github.com/my-dlq/blog-example/tree/master/jenkins-deploy 一、设置存储目录 在 Kubenetes 环境下…

Kolla-Ansible的确是不支持CentOS-Stream系列产品了

看着OpenStack最新的 C 版本出来一段时间了&#xff0c;想尝个鲜、用Kolla-Ansible进行容器化部署&#xff0c;结果嘛。。。 根据实验结果&#xff0c;自OpenStack Bobcat版本开始&#xff0c;Kolla-Ansible就适合在CentOS系列产品上部署了&#xff0c;通过对 Bobcat和Caracal…