day06-接口、代理模式设计模式、内部类、面向对象总结

实战Nocobase插件开发:如何用yarn pm命令快速创建和测试API接口插件 本文详细介绍了如何使用Nocobase插件开发工具快速创建和测试API接口插件,涵盖从环境配置、插件骨架生成到数据模型定义和接口实现的完整流程。通过yarn pm命令简化开发步骤,帮助开发者高效构建支持CRUD的API插件,适用于低代码平台开发场景。 阅读详情

1.接口

接口(interface)是抽象方法和常量值定义的集合。

接口是实现功能,比如,鼠标、键盘、打印机他们都有usb口,这是他们共同的功能,三者之间并不存在子父类的关系

接口的特点:
        用interface来定义。
        接口中的所有成员变量都默认是由public static final修饰的。
        接口中的所有抽象方法都默认是由public abstract修饰的。
        接口中没有构造器。
        接口采用多继承机制。
Java 8中,你可以为接口添加静态方法和默认方法。从技术角度来说,这是完全合法的,只是它看起来违反了接口作为一个抽象定义的理念。
静态方法:使用 static 关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。我们经常在相互一起使用的类中使用静态方法。你可以在标准库中找到像Collection/Collections或者Path/Paths这样成对的接口和类。
默认方法:默认方法使用 default 关键字修饰。可以通过实现类对象来调用。 我们在已有的接口中提供新方法的同时,还保持了与旧版本代码的兼容性。 比如:java 8 API中对Collection、List、Comparator等接口提供了丰富的默认方法。
接口中的默认方法
若一个接口中定义了一个默认方法,而另外一个接口中也定义了一个同名同参数的方法(不管此方法是否是默认方法),在实现类同时实现了这两个接口时,会出现:接口冲突。
解决办法:实现类必须覆盖接口中同名同参数的方法,来解决冲突。
若一个接口中定义了一个默认方法,而父类中也定义了一个同名同参数的非抽象方法,则不会出现冲突问题。因为此时遵守:类优先原则。接口中具有相同名称和参数的默认方法会被忽略。

 


2.代理模式设计模式

代理设计就是为真实对象提供一种代理以控制对这个对象的访问。
实现步骤:
1.接口,包含要实现的抽象方法
2.被代理类:重写接口的抽象方法,实现真实方法的功能
3.代理类:首先有一个接口的成员变量,然后构造器参数是接口类型的(方便将被代理类传进去),最后重写接口方法,实现被代理类的真实方法
应用场景:
安全代理:屏蔽对真实角色的直接访问。
远程代理:通过代理类处理远程方法调用(RMI)
延迟加载:先加载轻量级的代理对象,真正需要再加载真实对象
比如你要开发一个大文档查看软件,大文档中有大的图片,有可能一个图片有
100MB,在打开文件时,不可能将所有的图片都显示出来,这样就可以使用代理
模式,当需要查看图片时,用proxy来进行大图片的打开。
分类
静态代理(静态定义代理类)
动态代理(动态生成代理类)
JDK自带的动态代理,需要反射等知识
interface A {
int x = 0;
}
class B {
int x = 1;
}
class C extends B implements A {
public void pX() {
System.out.println(x);
}
public static void main(String[] args) {
new C().pX();
} }

有问题,编译不通过。
因为x是不明确的,此时父类和接口对于子类来说是同一条线上的。
开发中尽量不要让属性重名。我们在定义属性的时候尽可能的将名字区分开,不要定义重名的

//正确写法
interface A{
	int x=0;
}

class B{
	int x=1;
}

class C extends B implements A{
	public void pX() {
		System.out.orintln(super.x);//调用父类的x
		//利用接口中的x是全局常量
		System.out.println(A.x);//调用接口中的x
	}
	public static void main(String[] args) {
		new C().pX();
	}
}

3.内部类

分类:
成员内部类(static成员内部类和非static成员内部类)
局部内部类(不谈修饰符)
匿名内部类
1.成员内部类
成员内部类作为类的成员的角色:
和外部类不同,Inner class还可以声明为private或protected;
可以调用外部类的结构
Inner class 可以声明为static的,但此时就不能再使用外层类的非static的成员变量;
成员内部类作为类的角色:
可以在内部定义属性、方法、构造器等结构
可以声明为abstract类 ,因此可以被其它的内部类继承
可以声明为final的
编译以后生成OuterClass$InnerClass.class字节码文件(也适用于局部内部类)
【注意】
1. 非static的成员内部类中的成员不能声明为static的,只有在外部类或static的成员内部类中才可声明static成员。
2. 外部类访问成员内部类的成员,需要“内部类.成员”或“内部类对象.成员”的方式
3. 成员内部类可以直接使用外部类的所有成员,包括私有的数据
4. 当想要在外部类的静态成员部分使用内部类时,可以考虑内部类声明为静态的
class Outer {
    private int s;//成员变量
    public class Inner {//内部类
        public void mb() {//内部类的方法
        s = 100;
        System.out.println("在内部类Inner中s=" + s);
        } 
    }
    public void ma() {//外部类的方法
        Inner i = new Inner();//创建一个内部类对象
        i.mb();//调用内部类的方法
    } 
}

public class InnerTest {
    public static void main(String args[]) {
    Outer o = new Outer();//创建一个外部类对象
    o.ma();//调用外部类的方法
    } 
}

2.局部内部类

如何使用局部内部类
         只能在声明它的方法或代码块中使用,而且是先声明后使用。除此之外的任何地方都不能使用该类
         但是它的对象可以通过外部方法的返回值返回使用,返回值类型只能是局部内部类 的父类或父接口类型
         局部内部类可以使用外部方法的局部变量,但是必须是final的。由局部内部类和局部变量的声明周期不同所致。
         局部内部类和局部变量地位类似,不能使用public,protected,缺省,private
         局部内部类不能使用static修饰,因此也不能包含静态成员
public class Test2 {
    public void method(){//方法
        class A{//方法中的局部类
            int age;//局部类的成员变量
            public int getAge(){//局部类的方法
                return age;
            }
        }
    }
}

3.匿名内部类

匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
格式:
new 父类构造器(实参列表)|实现接口(){
        //匿名内部类的类体部分
}
匿名内部类的特点
         匿名内部类必须继承父类或实现接口
         匿名内部类只能有一个对象
         匿名内部类对象只能使用多态形式引用
interface A{
    public abstract void fun1();
}

public class Outer{
    public static void main(String[] args) {

        new Outer().callInner(new A(){
            //接口是不能new但此处比较特殊是子类对象实现接口,只不过没有为对象取名
            public void fun1() {
                System.out.println(“implement for fun1");
            }
        });// 两步写成一步了

    }

    public void callInner(A a) {
    a.fun1();
    }


}

4.面向对象总结

 

从零开始:HLW8110电能计量IC的硬件设计与软件调试全攻略 本文详细介绍了HLW8110电能计量IC的硬件设计与软件调试全流程,涵盖核心特性、抗干扰设计、UART通信协议及校准方法。通过实战案例和优化技巧,帮助工程师快速掌握高精度交流测量技术,适用于智能插座、充电桩等应用场景。 阅读详情

相关推荐

【教程】BM1684X-32边缘计算盒子 网络配置教程

BM1684X边缘计算盒子网络配置教程

ShiMetaPi的博客 715

接口的应用:代理模式(Proxy)

概述: 代理模式是Java开发中使用较多的一种设计模式。 代理设计就是为其他对象提供一种代理以控制对这个对象的访问。 public class NetWorkTest { public static void main(String[] args) { Server server = new Server(); server.browse(); ProxyServer proxyServer = new ProxyServer(server); proxyServer.browse();

飞奔的五花肉博客 604

STM32F103模拟SSI时序解析:实现高精度绝对式编码器位置读取

本文详细解析了如何在STM32F103微控制器上通过软件模拟SSI协议时序,实现高精度绝对式编码器的位置读取。文章从项目驱动出发,深入剖析了SSI通信原理、硬件电平转换连接、核心软件模拟代码实现及关键时序参数调试方法,并提供了使用示波器进行波形对齐与优化的实战指南,为成本敏感型工业控制与机器人项目提供了高性价比的解决方案。

weixin_29196315的博客 141

【Spring】- 接口代理、类代理

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34133829的博客 510

YOLO与3D点云融合:从原理到实践的多模态3D目标检测指南

最近在实验室和几个研究生聊天,发现一个挺有意思的现象:大家一提到“YOLO+3D点云”这个组合,第一反应往往是“顶会热门”、“发论文利器”,但真上手去复现或者想基于这个方向做点创新时,又常常卡在第一步——感觉每个部分都懂一点,但就是串不起来,不知道从哪开始,也不知道核心的“价值点”到底在哪。 这让我想起几年前刚开始接触这个领域时的自己,也经历过同样的困惑。当时看了很多论文,感觉“3D目标检测”这个方向既酷又难,YOLO负责2D图像里的快速定位,点云提供精确的三维空间信息,听起来是天作之合。但真正把代码跑起来

weixin_34267123的博客 415

手写Socket Web服务器:深入HTTP协议底层原理

HTTP协议是Web通信的基石,其本质是一套严格定义的文本格式与状态交互规范。理解它需回归传输层——TCP连接建立、请求响应格式(如状态行、头/体分隔符\r\n\r\n)、字符编码与字节长度一致性等核心原理。这些知识直接决定CORS拦截、中文乱码、Content-Length错误等高频问题的排查效率。在现代框架封装日益厚重的今天,亲手用Socket实现一个可被Chrome识别的极简Web服务器,成为掌握Web运行机制最有效的实践路径。本文即以DebugLZQ经典案例为蓝本,还原从URI解析、DNS查询、So

weixin_40192258的博客 534

java 用面向接口编程的方式开发打印机_Java面向接口编程之简单工厂模式示例

本文实例讲述了Java面向接口编程之简单工厂模式。分享给大家供大家参考,具体如下:一 代码interface Output{// 接口里定义的成员变量只能是常量int MAX_CACHE_LINE = 50;// 接口里定义的普通方法只能是public的抽象方法void out();void getData( String msg );}class Printer implements Outpu...

weixin_39880301的博客 462

深入解析SAP F4帮助函数F4IF_INT_TABLE_VALUE_REQUEST的回调机制

本文深入解析了SAP ABAP开发中F4IF_INT_TABLE_VALUE_REQUEST函数的回调机制。通过剖析其工作原理与核心参数,详细阐述了如何利用回调函数实现F4帮助的多值返回、动态数据过滤及选择后校验等高级定制功能,并提供了实用的代码示例与调试技巧,帮助开发者高效应对复杂的屏幕交互需求。

weixin_29213827的博客 198

面向对象思想

面向对象思想 编辑 面向对象的程序设计语言必 须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象;对象是属性及其操作的封装体;对象可按其性质划 分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。 中文名面向对象思想性质思想类别...

weixin_30851867的博客 196

新手秒变高手:使用一键脚本快速安装OpenClaw并完成初始化配置

一键脚本是一种自动化工具,可以帮助用户快速完成软件的安装和配置过程,无需手动执行繁琐的命令。OpenClaw提供了官方的一键安装脚本,让新手用户也能轻松部署OpenClaw。

一键难忘的博客 359

华为OD机试双机位B卷 - 比赛的冠亚季军 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位B卷 比赛的冠亚季军,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为OD机试 比赛的冠亚季军

qq_45776114的博客 703

Java 基础篇之面向对象

一、 什么是面向对象 1.1 类 类指对共享相同的属性、操作方法、行为及关系的一组对象的描述,是创建对象的模板。 示例: public class Dog { //属性 private String name; private String color; ... //操作方法 public String getName(){ return name; } public void setN...

Blare的博客 358

AI Agent Harness自动化漏洞扫描

本文要介绍的AI Agent Harness自动化漏洞扫描方案,正是为了解决传统漏扫的上述痛点而生。漏洞检出率提升35%以上,逻辑漏洞检出率从不足30%提升到92%误报率从27%降到3%以下,人工复核成本降低90%支持自定义业务系统、IoT、工控等多场景资产扫描,适配成本降低80%内置反馈学习机制,扫描效果越用越好AI Agent是指具备自主感知、决策、行动能力的大模型驱动程序,它可以根据给定的目标,自主调用工具、规划步骤、完成任务。

AI 原生应用开发的博客 473

Day06代理模式

代理模式是一种结构型设计模式,它可以为其他对象提供一种代理以控制对这个对象的访问。 所谓代理,是指具有与被代理对象相同的接口的类,客户端必须通过代理与被代理的目标类进行交互,而代理一般在交互的过程中(交互前后),进行某些特定的处理。 代理模式中的UML图如下: 代理模式中的角色: 1.抽象对象角色 声明了目标类及代理类对象的共同接口,这样在任何可以使用目标对象的地方都可以使用代理对象。 2.目标对...

weixin_44099397的博客 185

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

设计模式——Day06

设计模式 Day06 文章总结自B站尚硅谷 1. 享元模式 1.1 概念 也叫蝇量模式,运用共享技术有效地支持大量细粒度的对象; 常用于系统底层开发,解决系统的性能问题,类似于连接池,里面有创建好的连接对象,有需要就 直接拿来用,避免重新创建,如果没有就创建一个对象; 能够解决重复对象的内存浪费问题,当系统中有大量相似对象,可以从缓冲池里面拿,可以降低系统内存,提高效率; 最经典的应用场景是池技术。 1.2 内部状态与外部状态 享元模式的对象信息分为两个部分,内部状态以及外部状态。 外部状态:指对象

风间琉璃の博客 196

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Day 06抽象类

1.抽象类,接口,2.工厂设计模式 3. 接口,抽象类的区别

qq_49084227的博客 97

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Day06-设计模式与设计原则

23种设计模式类型、设计原则融合

qq_31199619的博客 216

Day14(2020.06.27)

1.设计模式 1.1单例模式 ​ Java 中最简单的设计模式之一。属于创建型模式,它提供了一种创建对象的最佳方式。 ​ 要求: 这个类在整个程序中 只存在一个实例 ​ 分类:饿汉式:线程安全 ​ 懒汉式:多线程不安全,需要加锁 ​ 创建类的步骤: ​ 1. 将构造器私有化, 不让外部有机会去创建对象 ​ 2. 自己应该有

qq_41575860的博客 150

Java基础核心技术:类特性2(day09-day11)-宋红康-专题视频课程

本套Java视频完全针对初级学员,课堂实录,自发布以来,好评如潮!Java视频中注重与学生互动,讲授幽默诙谐、细致入微,覆盖Java基础所有核心知识点,同类Java视频中也是代码量大、案例多、实战性强的。同时,本Java视频教程注重技术原理剖析,深入JDK源码,辅以代码实战贯穿始终,用实践驱动理论,并辅以必要的代码练习。...

songhongk的专栏 195

day-06-Filter&Listener

今日内容 Filter:过滤器 Listener:监听器 一、Filter:过滤器 1.什么是Filter过滤器 生活中的过滤器 净水器,空气净化器,土匪、香烟的过滤嘴、丈母娘 web中的过滤器 当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 过滤器的作用 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤… 2.Filter快速入...

Naker_的博客 277

学习day1 对spring 的面试高频次问题 2020-05-06

学习day1 对spring 的面试高频次问题使用spring 框架能给我带来那些好处:BeanFactory 和 ApplicationContext 有什么区别spring Bean 的生命周期spring Bean 各个作用域之间的区别spring Bean 是线程安全的吗?Spring 用到了那些设计模式?Spring ,spring Boot ,spring cloud 区别BeanFactory 和 FactoryBean的区别设计项目中如何应用AOP一个方法内可以使用 for循环重复操作数据库

WangSheng_0226的博客 368

Java学习Day17

面向切面编程(AOP)是一种编程范式,旨在通过将横切关注点(例如日志记录、事务管理、安全性等)与业务逻辑分离来提高代码的模块化。AOP是OOP(面向对象编程)的一个补充,它允许开发者以声明方式实现关注点,而不是通过在业务逻辑代码中散布大量重复代码。AOP 通过“切面”模块化跨多个类的功能,这些功能通常与业务逻辑不直接相关。AOP主要一般应用于签名验签、参数校验、日志记录、事务控制、权限控制、性能统计、异常处理等。

m0_63651681的博客 1145

23个设计模式一文搞懂

本笔记涵盖 23 种经典设计模式,按创建型、结构型、行为型三大类整理。每个模式配有生活类比、核心思想、结构图解、实现要点、真实应用案例、适用场景、优缺点分析及常见面试题。

weixin_72753562的博客 803

JAVASpring学习Day2

面向切面编程是一种编程范式,用于在程序中分离关注点,例如日志记录、事务管理和安全性。它主要由以下几个关键组成部分构成:连接点 (Join Point):在程序执行过程中可以插入切面的点,通常是方法的执行点。切点 (Pointcut):确定在何处应用切面的一组连接点的定义。通知 (Advice):在切点处执行的动作,包括前置、后置、异常、返回和环绕通知。切面 (Aspect):切点和通知的组合。代理模式是一种结构型设计模式,通过代理对象控制对原始对象的访问。

m0_63367052的博客 1248

全部目录链接

1.Api String类和Object 2.成员内部类,局部内部类 3.正则表达式 包装类 自动装箱自动拆箱 BigDecimal 4.IO流 File 字节流 字符流 5.序列化与反序列化 6.集合 List ArrayList 7.Map集合,hashMap的存储过程,Set集合 8.同步锁,异步锁,多线程,进程 9.反射,注解 ...

weixin_43762083的博客 919

OC学习_6_OC特有_属性、协议和代理

======文档更新状态===== 2015-12-18:发布==================day06-2015-12-17 一、属性1.简单的封装技术,可以自动生成相应代码 2.语法:声明(接口)部分使用@property; 实现部分使用@synthesize(OC1.0是必须要写的,OC2.0基本都省略不写) 3.当使用对象指针指向对象实例时,可以使用.运算符访问getter和

485
上一篇: day-06 static、单例设计模式、main、代码块、成员变量赋值顺序、final、抽象类抽象方法、模板方法设计模式
下一篇: day07-异常
m0_62361663
博客等级 码龄5年 0粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值