第五章 面向对象-4abstract抽象

news2024/11/24 17:41:52

1.4 abstract class抽象类

声明抽象类,使用关键字abstract

//内部匿名类
Db db = new Db(){
};

3.了解抽象类 抽象方法

AbstractClassMain.java

/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;

/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 21:57 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */

public class AbstractClassMain {
    public cn.practice2.AbstractClass getAbstractClass() {
        return abstractClass;
    }

    public void setAbstractClass(cn.practice2.AbstractClass abstractClass) {
        this.abstractClass = abstractClass;
    }

    public AbstractClassMain(cn.practice2.AbstractClass abstractClass){
        this.abstractClass = abstractClass;
    }

    private cn.practice2.AbstractClass abstractClass;

    public void connect(cn.practice2.AbstractClass abstractClass){
        abstractClass.connection();
    }

    public static void main(String[] args) {
        AbstractClass d1 = new cn.practice2.AbstractClassMySQL();
        AbstractClassMain dm = new AbstractClassMain(d1);
        //dm.connect(d1);
        dm.connect(new AbstractClassMySQL());
        dm.connect(new AbstractClassOracle());
    }
}

AbstractClassMySQL.java

/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;

/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 21:59 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class AbstractClassMySQL extends AbstractClass{
    @Override
    public void connection() {
        System.out.println("张三...MySQL conn...");
    }
}

AbstractClassOracle.java

/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;

/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 22:00 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class AbstractClassOracle  extends AbstractClass{
    @Override
    public void connection() {
        System.out.println("李四...  Oracle conn...");
    }
}

在这里插入图片描述

AbstractClass.java

/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;

/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 22:01 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public abstract class AbstractClass {
    //抽象方法
    public abstract void connection();

    public  int square(int i){
        return i*i;
    }

    //   public int sum(int a, int b){
    //       this.a = a;
    //       this.b = b;
    //       return a+b;
    //   }

    //   public static void main(String[] args) {

    //   }
}

抽象类:

1、抽象类声明时abstract class 类名{}

2、抽象类不能直接实例化,使用抽象类的子类

3、抽象类是可以有抽象方法 abstract void show(); 没有方法体

4、A a = new B();声明B类时继承了A类,A是父类,B是子类

5、抽象方法是不能私有的private修饰

6、有抽象方法的类必须为抽象类,抽象类可有抽象方法、没有抽象方法,也可有普通方

InputStream is = new FileInputStream();

InputStream 是抽象类,FileInputStream类是继承的子类

​ 类 = 静态段 初始化段 属性 方法 class 类名{}

抽象类 = 静态段 初始化段 属性 方法 [抽象方法] abstract class 类名{}

7、抽象更像一种编程规范,一般是项目经理,架构师编写的多。

4.掌握extends final abstract super this 关键字使用

问题讲解
User.builder().name().age().address();

@Builder

所有子类都会执行super()

1.构造方法

  • 没有返回值,不能使用void

  • 不能是static

  • 方法名称必须和类名一致

  • 如果编写类时没有写构造方法,编译器自动为class类文件添加一个无参构造方法

    • public Xxx(){
          super();
      }
      
  • 如果编写构造方法,编译器不在添加无参构造,建议最好自己编写一个无参空构造方法

  • 构造方法,不能通过对象调用,只能new的时候自动调用相关的构造方法。

  • 构造方法中第一行,永远是调用父类构造器

    • //super();
      super(1,3);
      

blic Xxx(){
super();
}
```

  • 如果编写构造方法,编译器不在添加无参构造,建议最好自己编写一个无参空构造方法

  • 构造方法,不能通过对象调用,只能new的时候自动调用相关的构造方法。

  • 构造方法中第一行,永远是调用父类构造器

    • //super();
      super(1,3);
      

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

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

相关文章

Chatgpt中文版无需代理,ChatGPT镜像

Chatgpt中文版无需代理 网站ChatGPT中文版 ChatGPT中文版是一个基于人工智能技术的聊天机器人&#xff0c;它可以模拟人类的自然语言交互&#xff0c;回答用户的各种问题和提供各种服务。它的核心技术是GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型&am…

基础:Android相关基础知识

目录 1.Android 四大组件 2.Activity生命周期 3.Service的生命周期 4.Service的启动方式 5.Activity的启动模式 6.广播的分类 7.ANR是什么&#xff0c;怎么避免&#xff1f; 8.Handler消息处理机制 9.事件分发机制 10.View绘制流程 11.Binder机制 12.进程间通信 1…

2023最新一键开通主机免费源码

更新了ui 自助开通主机&#xff0c;自己修改服务器 不带接口&#xff0c;不带接口&#xff0c;不带接口 打开api.php文件&#xff0c;把8.8.8.8改服务器ip&#xff0c;123456改成你的密钥 前往我的技术博客查看更多https://202271.xyz/?zhuji 蓝奏云链接 https://wwp.lanz…

如何在Linux中显示网络连接、路由表、接口统计等信息?Netstat了解一下!

Netstat 是一个用于显示网络连接、路由表、接口统计等信息的命令行工具。它在 Linux 和其他类 Unix 系统中都有提供&#xff0c;可以帮助我们分析和诊断网络问题。本文将介绍 Netstat 命令的基本用法和常见选项。 Netstat 命令的语法 Netstat 命令的基本语法如下&#xff1a; …

rtl仿真器-ghdl安装和测试

安装 sudo add-apt-repository ppa:pgavin/ghdl sudo apt-get update sudo apt-get install ghdl gtkwave仿真 rtl add.v library ieee; use ieee.std_logic_1164.all; entity ADD is port (A,B:in bit; SUM,CARRY:out bit); end entity ADD; architecture behave of ADD i…

前端部署vue项目到腾讯云服务器

先把dist包上传服务器 可以使用宝塔、FileZilla、手动上传等等方式 已有腾讯云服务器之后进入面板界面 然后安装Nginx 请一步一步&#xff0c;紧跟步骤 第一步 安装gcc-c 编译器。nginx依赖的 pcre 和 zlib 包 yum -y install gcc zlib zlib-devel pcre-devel openssl openss…

嵌入式通信协议【Modbus】Modbus功能码的详细描述

一、读功能码 1、 01 (0x01)读线圈 在一个远程设备中&#xff0c;使用该功能码读取线圈的 1 至 2000 连续状态。请求 PDU 详细说明了起始地址&#xff0c;即指定的第一个线圈地址和线圈编号。从零开始寻址线圈。因此寻址线圈 1-16 为 0-15。 根据数据域的每个比特将响应报文…

vs 推送代码 之 gitee

我们常常想将自己的代码放入到代码管理工具中&#xff0c;接下来我们将讲解如何去将vs中的代码放入到代码管理工具中 目的&#xff1a;将vs中的项目代码放入到gitee中 首先&#xff1a; 我们需要注册一下gitee的账号&#xff0c;官网&#xff1a;gitee官网 辅助工具&#xff…

做网络那么多年,连以太网接口和串口都分不清?本文值得一看!

路由器是一种网络设备&#xff0c;它的主要功能是在不同的网络之间转发数据包&#xff0c;实现网络互联。路由器根据数据包的目的地址&#xff0c;选择最佳的路径&#xff0c;将数据包发送到下一跳。路由器可以连接不同的网络类型&#xff0c;如以太网、帧中继、PPP等。 路由器…

JavaWeb_Mysql_多表设计与查询

JavaWeb_Mysql_多表设计与查询 多表设计外键约束物理外键 -- 不推荐逻辑外键 多表关系实现 多表查询数据准备内连接外连接子查询标量子查询列子查询行子查询表子查询 案例数据准备案例需求 来源 多表设计 外键约束 物理外键 – 不推荐 概念: 使用foreign key定义外键关联另外…

关于网络命令 ping 你了解多少

1、介绍 Ping(Packet Internet Groper)是 Windows、Unix 和 Linux系统下的一个命令。ping 也属于一个通信协议&#xff0c;是 TCP/IP 协议的一部分。   Ping的运作原理是向目标主机传出一个 ICMP&#xff08;Internet Control Messages Protocol&#xff09;即因特网信报控制…

Linux内核的源码目录结构和配置体系

1.linux内核源码目录结构1 1.1、源码从哪里来 (1)我们使用2.6.35.7版本的内核。这个版本的内核有三种&#xff1a;第一种是kernel.org上的官方版本&#xff0c;第二种是三星移植过的&#xff0c;第三种是九鼎X210的移植版本。这里使用第三个。 (2)进入源码目录下&#xff0c…

《QT+PCL》点云配准进阶——GROR配准

《QT+PCL》点云配准进阶——GROR配准 一、展示效果二、ui设计三、代码3.1添加代码一、展示效果 根据之前的文章GROR复现,今天将其集成到QT软件中 二、ui设计 三、代码 3.1添加代码 qt的头文件、源文件依旧添加相关代码 其中,如果有函数冲突,改成内联函数,添加inline<…

【系统移植】开发板的启动过程

目录 1、开发板启动相关部件 2、开发板启动过程&#xff08;以 EMMC 启动为例&#xff09; (1) 运行 BL0&#xff08;初始化&#xff09; (2) 加载 uboot 引导程序 (3) 加载 linux 镜像、设备树、根文件系统 3、SD卡的存储结构 1、开发板启动相关部件 下面是一个简单的开…

非常有用的Linux网络诊断命令:traceroute

简介 traceroute 是一个网络诊断工具&#xff0c;用于检测数据包从本机到目标主机经过的路由路径。它可以帮助我们分析出网络连接的瓶颈&#xff0c;定位网络问题&#xff0c;并帮助我们优化网络连接。在 Linux 系统中&#xff0c;traceroute 命令是一个非常常用的工具。 安装…

java语法(二)线程并发、Juit单元测试、注解、反射机制、JVM

文章目录 线程并发多线程多线程的创建Thread常用API 线程同步与通信线程同步&#xff1a;单例模式的三种写法同步代码块同步方法Lock锁 线程通信 线程池获取线程池对象ThreadPoolExecutor线程池处理runnable任务线程池处理callable任务 Executors定时器Timer调度可重复执行任务…

【连续介质力学】张量的谱表示和Cayley-Hamilton定理

张量的谱表示 基于特征多项式&#xff1a; 如果 T T T 是对称二阶张量&#xff0c;那么有三个实数特征值&#xff1a; T 1 , T 2 , T 3 T_1, T_2, T_3 T1​,T2​,T3​, 对应有特征向量&#xff1a; 主空间由特征向量构成的正交基 n ^ ( 1 ) , n ^ ( 2 ) , n ^ ( 3 ) \hat n^…

【自然语言处理】【大模型】BLOOM模型结构源码解析(单机版)

BLOOM模型结构源码解析(单机版) ​ 本文基于transformers中BLOOM模型代码来解析BLOOM的原理及实现。 相关博客 【自然语言处理】【大模型】BLOOM模型结构源码解析(单机版) 【自然语言处理】【大模型】极低资源微调大模型方法LoRA以及BLOOM-LORA实现代码 【深度学习】【分布式训…

Win32程序入口识别,定位回调函数,具体事件处理的定位,ESP寻址方式,压栈方式复习

本专栏上一篇文章带领大家编写了第一个Windows程序&#xff0c;并且带领大家了解了Windows消息机制&#xff0c;如果大家还是不了解的话&#xff0c;可以到我的另一篇专栏中深入学习一下windows消息&#xff0c;Windows消息循环的原理&#xff0c;点击这里就可以查看啦。 我们在…

Gateway网关详解及实践---SpringCloud组件(五)

Gateway网关详解及实践 一 简介1.1介绍1.2.GateWay核⼼概念1.3.GateWay核心功能 二Gateway入门案例2.1 gateway依赖2.2 gateway配置2.3 gateway测试 三Gateway面向服务的路由3.1.门案例问题3.2.gateway-server结合eureka步骤3.2.1.添加Eureka客户端依赖3.2.2.添加Eureka配置3.2…