mosh java 2.4 inheritance继承

1.面向对象编程的第三个特点 继承

 

继承的好处

 

 java不能继承多个父级

代码文件结构

1.main.java


package org.example;
//package org.codewithme;//import org.example.UIControl;//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {public static void main(String[] args) {
// var control = new TextBox();
// control.
//        control.disable();
//        System.out.println(control.isEnabled());
//        var obj = new Object();
//        obj.//        var box1 = new TextBox();
//        var box2 =box1;
//        System.out.println(box1.hashCode());
//        System.out.println(box2.hashCode());//这个对象的地址的哈希值
//        System.out.println(box1.equals(box2));//        var box1 = new TextBox();
//        var box2 =new TextBox();
//        System.out.println(box1.equals(box2));
//        System.out.println(box1.toString());//        2.不想重复编码 使用inheritance//      3.  访问修饰符
//        public成员可以在class外被访问 而private不能
//var textBox = new TextBox();
//        new UIControl(true).is
//        protected 修饰的变量在这个包里是公共的//        4.方法重写 overriding 重写继承至父类的方法
//        方法重构 overloading ,同一个名字的方法 传参不一样
//        var textBox = new TextBox();
//        textBox.setText("hello world");
//        System.out.println(textBox);//不用显示调用textBox.toString(),因为printline方法自动会调用,任何传到这个括号里的对象 的toString()方法//        System.out.println(textBox.toString());//        5.upcasting和downcasting//        var control = new UIControl(true);
//        var textBox = new TextBox();
//        show(textBox);//TextBox class中继承了uI ctrolclas//        6.比较两个对象
//var point1 = new Point(1,2);
//var point2 = new Point(1,2);
//        System.out.println(point1==point2);//point1和point2都是引用类型,这俩东西储存的是point对象在内存中的地址,这是两个不同的对象 所以这两个变量中有不同的值System.out.println(point1.equals(point2));System.out.println(point1.equals(textBox));System.out.println(point1.equals(point1));
//        System.out.println(point1.hashCode());
//        System.out.println(point2.hashCode());//
//        7.面向编程的第四个特点 多态
//UIControl[] controls = {new TextBox(),new CheckBox()};
//for (var control : controls){//for (元素类型 变量名 : 集合或数组)
//    control.render();//多态的体现 每个类都有自己各自的render方法 而不是在主方法里写 fat if else语句
//}//  8.抽象类和方法//       a.
//        var uiControl = new UIControl();//        b.final classes 当声明一个class为此类型时 不能再extends它了//        9.多重继承 python c++类语言可以继承多个父级 但也因为带来了一些复杂性 所以java没有多重继承}
//    5.upcasting和downcasting的函数
//    public static void show(UIControl control){//调用这个方法时 TextBox被自动转换成UIControl类型,这就是upcasting
//        if (control instanceof TextBox){//control是否是TextBox class的实列
//            var textBox=(TextBox)control;//显示转换此对象为TextBox类型
//            textBox.setText("ddd");//这就是downcasting,使用时要确定传到这个函数里的对象它原本就是Textbox的实列,这样就可以安全地将其转换成TextBVox了
//        }
//        System.out.println(control);
//    }
}

 2.uicontrol.java

package org.example;public abstract class UIControl {//声明这一类为abstract后 此class不能再被实列化了 ,只能继承extends 它
//    private boolean isEnabled = true;
protected boolean isEnabled = true;//protected is public in pacakage,即只要在package org.example;中isEnabled就是公共字段//    public UIControl(boolean isEnabled) {
//        this.isEnabled =isEnabled;
//        System.out.println("ui conrol");
//    }//    public void enable(){
//        isEnabled = true;
//    }
public final void enable(){//final 方法是不能override的isEnabled = true;
}public void disable(){isEnabled = false;}public boolean isEnabled(){return isEnabled;}//    定义一个泛型方法
//    public void render(){
//
//    }public abstract void render();//声明此方法为abstract 删除{}编成方法的声明而不是实现
}

3.textbox class

package org.example;public class TextBox extends UIControl {
//    textBox继承了uiconrol class中所有的特性
//private String text = "";//    public TextBox() {
//        super(true);//显示调用父级 extends对象的构造函数this.is//subclass不能访问 baseClass的private field methodsSystem.out.println("text box");
//    }public void setText(String text) {this.text = text;}public void clear() {text = "";}@Override//这种叫注释,这一句的目的是告诉java我们重写了toString这个方法public String  toString(){return text;}@Overridepublic void render() {System.out.println("render textbox");}
}

4.checkbox java

package org.example;//public abstract class CheckBox extends UIControl{//因为extends了ui control 这个render方法 要不就要实现 要不就要也声明为abstract@Overridepublic void render() {//这个render方法 要不就要实现 要不就要也声明为abstractSystem.out.println("render checkbox");}
//}
public final class CheckBox extends UIControl{//因为extends了ui control 这个render方法 要不就要实现 要不就要也声明为abstract@Overridepublic void render() {//这个render方法 要不就要实现 要不就要也声明为abstractSystem.out.println("render checkbox");}}//public class MyCheckBox extends CheckBox{}
//public class MyCheckBox extends String{}//String class是不可继承的

5.point.java

package org.example;import java.util.Objects;public class Point {private int x;private int y;public Point(int x, int y) {this.x = x;this.y = y;}//    @Override
//    public boolean equals(Object obj) {
//        if(this == obj)
//            return true;
//
//        if (!(obj instanceof Point))
//            return false;
//        var other = (Point) obj;
//            return other.x == x && other.y == y;if (obj instanceof Point) {var other = (Point) obj;return other.x == x && other.y == y;}return false;
//    }
//@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Point point = (Point) o;return x == point.x && y == point.y;}@Overridepublic int hashCode() {return Objects.hash(x, y);}
//    @Override
//    public int hashCode() {
//       return Objects.hash(x,y);//哈希值理论上是 标志对象的唯一值
//    }
}

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

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

相关文章

3C电子胶黏剂在手机制造方面有哪些关键的应用

3C电子胶黏剂在手机制造方面有哪些关键的应用 3C电子胶黏剂在手机制造中扮演着至关重要的角色&#xff0c;其应用广泛且细致&#xff0c;覆盖了手机内部组件的多个层面&#xff0c;确保了设备的可靠性和性能。以下是电子胶在手机制造中的关键应用&#xff1a; 手机主板用胶&…

率先搭载存内计算AI芯片,维迈通引领骑行通讯降噪革新

近日&#xff0c;高端骑行头盔耳机领导品牌维迈通&#xff08;VIMOTO&#xff09;三款新品XR、V10S、V10X全平台正式发售&#xff0c;创新搭载了知存科技&#xff08;Witmem&#xff09;高能效存内计算AI芯片&#xff0c;为骑行爱好者带来更极致的AI降噪体验。 作为一家专注摩托…

状压DP

状压DP 对于数据范围n<20的可以考虑状压DP 1.蒙德里安的梦想 题目描述 求把 N M NM NM 的棋盘分割成若干个 12 的的长方形&#xff0c;有多少种方案。 例如当$ N2&#xff0c;M4$ 时&#xff0c;共有 5 种方案。当 N 2 &#xff0c; M 3 N2&#xff0c;M3 N2&…

windows 创建新用户,并分配到指定组

右击电脑 -> 点击管理 在右边右击&#xff0c;选择新用户&#xff0c;输入相关信息创建 创建用户后&#xff0c;选择用户&#xff0c;右击&#xff0c;选择属性&#xff0c;添加 点击高级 点击立即查找&#xff0c;可以搜索出所有可用的组&#xff0c;为其选择即可

Java XML

1、XML文件介绍 配置文件&#xff1a;用来保存设置的一些东西。 拿IDEA来举例&#xff0c;比如设置的背景图片&#xff0c;字体信息&#xff0c;字号信息和主题信息等等。 &#xff08;1&#xff09;以前是用txt保存的&#xff0c;没有任何优点&#xff0c;而且不利于阅读&a…

停车位检测-停车场车位识别

YOLO Parking Spot 概述 停车场获取的图像训练了四个YOLO模型来检测车辆。目标是收集信息&#xff0c;并可能开发一种停车解决方案以改善交通流量并优化空间利用率。通过识别汽车&#xff0c;我们生成了一份报告&#xff0c;其中包含图像细节&#xff0c;如可用停车位的数量、…

官宣:Zilliz 在亚马逊云科技中国区正式开服!

01 Zilliz Cloud 正式上线亚马逊云科技宁夏区服务 9 月 4 日&#xff0c;Zilliz 正式官宣&#xff0c; Zilliz Cloud 正式上线亚马逊云科技在宁夏区的云服务。至此&#xff0c;Zilliz Cloud 已实现全球 5 大云 19 个节点 的全覆盖&#xff0c;成为全球首个提供海内外多云服务的…

《机器学习》—— SVD奇异值分解方法对图像进行压缩

文章目录 一、SVD奇异值分解简单介绍二、代码实现—SVD奇异值分解方法对图像进行压缩 一、SVD奇异值分解简单介绍 SVD&#xff08;奇异值分解&#xff09;是一种在信号处理、统计学、线性代数、机器学习等多个领域广泛应用的矩阵分解方法。它将任何 mn 矩阵 A 分解为三个特定矩…

从0书写一个softmax分类 李沐pytorch实战

输出维度 在softmax 分类中 我们输出与类别一样多。 数据集有10个类别&#xff0c;所以网络输出维度为10。 初始化权重和偏置 torch.norma 生成一个均值为 0&#xff0c;标准差为0.01,一个形状为size(num_inputs, num_outputs)的张量偏置生成一个num_outputs 10 的一维张量&a…

Kubernetes从零到精通(10-服务Service)

Service简介 Deployment这种工作负载能管理我们应用Pod的副本数&#xff0c;并实现动态的创建和销毁&#xff0c;所以Pod本身是临时资源&#xff08;IP随时可能变化&#xff09;。现在如果某组Pod A需要访问另一组Pod B&#xff0c;A就需要在应用的配置参数里动态跟踪并更改B的…

【数学建模】相关系数

第一部分&#xff1a;相关系数简介 总体与样本&#xff1a; 总体&#xff1a;指研究对象的全体&#xff0c;比如全国人口普查数据。样本&#xff1a;从总体中抽取的一部分个体&#xff0c;如通过问卷调查收集的学生数据。 皮尔逊相关系数&#xff1a; 总体皮尔逊相关系数&…

Linux 8250串口控制器

1 8250串口类型的识别 Intel HW都使用DesignWare 8250&#xff1a; drivers/mfd/intel-lpss-pci.c drivers/tty/serial/8250/8250_dw.c IIR寄存器的高2位bit7、bit6用来识别8250串口的类型&#xff1a; 0 - 8250&#xff0c;无FIFO 0 - 并且存在SCR&#xff08;Scratch registe…

安科瑞Acrel-1000DP分布式光伏监控系统平台的设计与应用-安科瑞 蒋静

针对用户新能源接入后存在安全隐患、缺少有效监控、发电效率无法保证、收益计算困难、运行维护效率低等通点&#xff0c;提出的Acrel-1000DP分布式光伏监控系统平台&#xff0c;对整个用户电站全面监控&#xff0c;为用户实现降低能源使用成本、减轻变压器负载、余电上网&#…

如何构建大数据治理平台,助力企业数据决策

建设背景 &#xff08;1&#xff09;什么是数据资产 资产由企业及组织拥有和控制&#xff0c;能够提供增值服务、带来经济利益的重要资源。 资产不但需要管理&#xff0c; 更需要运营。 &#xff08;2&#xff09;数据资产运营中的问题 数据资产运营中存在的问题主要包括以下…

CANopen协议的理解

本文的重点是对CANopen协议的理解&#xff0c;不是编程实现 参考链接 canopen快速入门 1cia301协议介绍_哔哩哔哩_bilibili CANopen是什么&#xff1f; CANopen通讯基础&#xff08;上&#xff09;_哔哩哔哩_bilibili CANopen概述 图1. CAN报文标准帧的格式 CAN的报文可简单…

docker-compose 部署 flink

下载 flink 镜像 [rootlocalhost ~]# docker pull flink Using default tag: latest latest: Pulling from library/flink 762bedf4b1b7: Pull complete 95f9bd9906fa: Pull complete a880dee0d8e9: Pull complete 8c5deab9cbd6: Pull complete 56c142282fae: Pull comple…

Redis搭建集群

功能概述 Redis Cluster是Redis的自带的官方分布式解决方案&#xff0c;提供数据分片、高可用功能&#xff0c;在3.0版本正式推出。 使用Redis Cluster能解决负载均衡的问题&#xff0c;内部采用哈希分片规则&#xff1a; 基础架构图如下所示&#xff1a; 图中最大的虚线部分…

路由器WAN口和LAN口有什么不一样?

“ 路由器WAN口和LAN口的区别&#xff0c;WAN是广域网端口&#xff0c;LAN是本地网端口。WAN主要用于连接外部网络&#xff0c;而LAN用来连接家庭内部网络&#xff0c;两者主要会在标识上面有区别。以往大部分路由器的WAN只有一个&#xff0c;LAN口则有四个或以上&#xff0c;近…

《深度学习》—— 神经网络基本结构

前言 深度学习是一种基于神经网络的机器学习算法&#xff0c;其核心在于构建由多层神经元组成的人工神经网络&#xff0c;这些层次能够捕捉数据中的复杂结构和抽象特征。神经网络通过调整连接各层的权重&#xff0c;从大量数据中自动学习并提取特征&#xff0c;进而实现预测或…

Banana Pi BPI-SM9 AI 计算模组采用算能科技BM1688芯片方案设计

产品概述 香蕉派 Banana Pi BPI-SM9 16-ENC-A3 深度学习计算模组搭载算能科技高集成度处理器 BM1688&#xff0c;功耗低、算力强、接口丰富、兼容性好。支持INT4/INT8/FP16/BF16/FP32混合精度计算&#xff0c;可支持 16 路高清视频实时分析&#xff0c;灵活应对图像、语音、自…