首页
学习
活动
专区
圈层
工具
发布

C# 基础知识系列- 4 面向对象

图是一个不正确的UML类图,但是可以简单的概述一下我们抽象的结果。这个图就描述了一个我们抽象出来的钢笔类应该有哪些特性,而我手里的那只钢笔就可以看做是钢笔类的一个实例。...public Person() 和public Person(string name)是构造方法,所谓的构造方法就是初始化一个实例的方法,调用形式如下: Person p = new Person()...具体的介绍是: virtual 关键字声明函数为虚函数,意思就是子类可能会重写该方法 override 用在子类,用来声明该方法是重写父类的方法 new 跟实例化对象的new不同,这个放在方法前的意思是该方法会隐藏父类方法的实现...return "test2"; } } 接口的实现和类的继承都是 : ,先继承后实现。...(); demo.Method();// 返回 test 使用接口名.方法名实现方法的时候,这个方法对于实现类构造的对象来说是不可访问的。

61630

深入分析Java反射(三)-泛型

4、不能实例化类型变量或者类型变量数组,例如T t = new T()或者T[] arr = new T[10]都是非法的。...再议泛型数组的问题 在Java泛型约束中,无法实例化参数化类型数组,例如Pair[] table = new Pair[10];是非法的。...举个例子,假设可以实例化参数化类型数组: Pair[] table = new Pair[10]; 上面的参数化类型数组在泛型擦除之后,数组实例table的类型为Pair...[],数组元素类型为Pair,可以强转为Object[]类型数组: Object[] objArray = table; 基于泛型擦除,数组objArray可以任意赋值Pair的泛型化实例...这样子能够通过数组存储元素的检查,后续操作数组元素随时会出现ClassCastException。基于以上的原因,Java从编译层面直接拒绝创建参数化类型数组。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android】只给个泛型,如何自动初始化ViewModel与ViewBinding?这几种方案值得了解

    能不能直接在基类中: ViewModelProvider(this).get(VM::class.java) VB.inflate(inflater) 这样会报错的,因为运行期间泛型会被擦除也无法实例化对应的对象...其实我们想要在基类完成泛型的实例化,我们目前是有两种思路,一种是反射获取到泛型的实例,一种是通过编译器代码生成完成对象的实例创建,其中又分为APT代码生成和ASM字节码插桩两个小分支。...的实例对象。...混淆,这才是大问题,反射代码在混淆过程中我们需要额外的注意,因为类和成员的名称可能会被改变。如果不正确配置混淆规则,可能导致在运行时无法正确地通过名称找到相应的类、方法或字段,引发异常。...在你的代码中,你使用了auto-service库,并使用@AutoService注解和AutoService抽象类来自动生成META-INF/services文件,用于注册你的注解处理器。

    88210

    Dubbo源码篇02---从泛化调用探究Wrapper机制的原理

    ---- 泛化调用 要以一个统一的请求接口作为入口地址,其实就类似于DispatchServlet统一拦截处理所有servlet请求的思路一样,然后再由DispatcherServlet按照路由规则派发给各个控制器进行请求处理...此时我们就需要使用到Dubbo提供的泛化调用特性了,即在调用方没有服务方提供的服务调用接口的情况下,对服务方进行调用,并且可以正常拿到调用结果。...respCode 响应码判断并做最终返回 ---- 泛化调用小结 泛化调用是指在调用方没有服务方提供的 API(SDK)的情况下,对服务方进行调用,并且可以正常拿到调用结果。...泛化请求会携带接口类名、接口方法名、接口方法参数类名、业务请求参数,这四个维度的字段发起远程调用。 服务提供方服务,需要在统一的入口中接收请求,然后派发到不同的接口服务中去。...最容易想到的思路便是通过反射机制获取接口类名对应的类对象,然后利用类对象从IOC容器中拿到对应的bean,通过接口方法名和接口方法参数,来精准定位需要提供方接口服务中的哪个方法进行处理。

    1K80

    第一阶段-Java基础知识:【第三章 方法和数组】

    定义:用同一方法名定义多个方法,这些方法的参数个数或者参数类型不同 作用:使一个方法名赋予新的含义,使一个方法名可以多用 适用:实现细节不同的同一类功能时候 理解:其实就是使得一个方法拥有了更多的可能性...初始化: A:概念:为数组开辟内存空间,为每个数组元素赋予值(内存分配问题就在下面哦) B:方式: a:动态初始化 → 只指定长度,由系统给出初始化值 b: 静态初始化 → 给出初始化值,由系统决定长度...你可能会建议使用ArrayList,它可以通过创建一个新实例,然后把旧实例中所有的引用到移到新实例中,从而实现更多空间的自动分配。...方法区(Method Area)存储所有类(class)和静态变量(static)本地方法区 (Native Method Area)后期补充寄存器后期补充 ?...那么,网站是如何做到快速将商品按照某种规则排序的呢? 下面我们就来介绍几种常见的排序方法 数组是用来存储一些数据的“容器”,可能我们需要将其中的元素,按照我们一定的规则进行处理,使其成为有序的序列。

    86220

    Python operator 模块神器 method caller!一行代码高效调用对象方法

    我们不需要再写复杂的 Lambda 表达式,只需要用 method caller 指定要调用的方法名和参数,就能轻松实现对对象方法的调用。...它的基本用法也很简单,先从 operator 模块中导入 methodcaller,然后通过methodcaller(方法名, 参数)的形式创建一个可调用对象,这个对象作用到某个实例上,就会调用该实例对应的方法...参数传递错误当方法需要参数时,如果传递的参数数量或类型不正确,会抛出相应的异常。...回答:operator 模块中的 method caller 是一个工具,它可以创建一个可调用对象,当这个对象作用到某个实例上时,会调用该实例指定的方法。...回答:可能会遇到方法名拼写错误,导致抛出 AttributeError 异常,这需要我们仔细检查方法名拼写;还可能出现参数传递错误,比如参数数量或类型不正确,这就要求我们了解清楚所调用方法的参数要求,确保传递正确的参数

    19410

    对接多个 Neuron 实例,实现多网关协同分析与设备联动

    之后,eKuiper 中可配置该认证码,规则运行后会使用认证码来请求访问令牌,并可能在到期后通过刷新令牌来刷新令牌。...使用方式有很简单,新版本中 MQTT sink 添加了属性 compresson,配置需要的压缩算法名字即可。"...图片更易用的规则管理由于规则的启停 API 是异步的,API 调用完成后无法立刻得知启动是否成功,所以在之前版本的 eKuiper manager 中,点击启动或重启,规则立刻变为启动状态。...Portable 插件更新到不正确的插件时无法热恢复的问题修复 Flow Editor 部分节点参数输入框,描述不正确等问题即将到来4 月我们将主要进行 1.10.0 版本的开发,这个版本将进行 EdgeX...另外,我们也会探索外部状态,如 Redis 状态的使用,实现持久化的状态。敬请期待。版权声明: 本文为 EMQ 原创,转载请注明出处。

    1K50

    【1-3java语言高级】笔记(自己整理原创)

    修饰符 返回值类型 方法名(参数列表 使用泛型){} public void method 01(M m){} 传进来什么类型就是什么类型 静态方法不建议创建对象使用 静态方法 通过...类名.方法名(参数)直接使用 含有泛型的接口 定义接口的实现类,实现接口,指定接口的泛型 public interface Iterator{E next();} 第二种方式 接口使用什么泛型 实现类就使用什么泛型...继承了HashSet 多一条链表保证元素有序 可变参数 修饰符 返回值类型 方法名(参数类型 参数名) 类型确定 个数不确定 修饰符 返回值类型 方法名(数据类型 … 变量名) 变量个数可为 0...comparTO规则 this 和参数 传参 Comparator 相当于找第三方 重写 compare 规则 o1 和 o2 07Map集合 特点 双列 key不允许重复...添加集合工厂方法 Set.of() Map.of() List.of() 返回的是不能改变的集合不能使用add put等方法 Set和Map调用of时候不能有重复元素否则异常 05DeBug调试追踪

    66520

    Google Java编程风格指南

    其他术语说明,将在文档中需要说明的地方单独说明。 1.2 指南说明 本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google编程风格,但并不意味着这是展现这些代码的唯一方式。...归为一组 使用的第三方包的导入,每个顶级按字典顺序归为一组。...这条规则也适用于foreach语句中的冒号。 方法名或构造函数名与左括号留在同一行。 逗号(,)与其前面的内容留在同一行。也就是在逗号之后断行。 Lambda表达式在箭头符号(->)后断行。...当存在连续自动换行时,缩进可能会多缩进不只4个空格(语法元素存在多级时)。一般而言,两个连续行使用相同的缩进当且仅当它们开始于同级语法元素。...4.6 空白 4.6.1 垂直空白 以下情况需要使用单行空行: 类成员之间需要单个空行隔开:例如:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。

    1.5K20

    Vue学习-axios

    这里也介绍一个网站,可以用于网络请求的测试:httpbin.org ---- axios 介绍 以下内容来自官网:axios中文文档|axios中文网 | axios (axios-js.com) Axios...://127.0.0.1:5000’ 请求前的数据处理 transformRequest:[function(data){}] 请求后的数据处理 transformResponse: [function...原因:如果第三方库停止维护,方便改用其他的代替内容。修改起来仅需改动封装的部分代码就好。 在项目的src文件夹下新建一个network文件夹,用于存放网络相关的封装代码。...请求拦截 作用: 当发送网络请求时,在页面中添加一个loading组件,作为加载动画 某些请求要求用户必须登录,判断用户是否有token(令牌),如果没有则跳转到login页面 对请求的参数进行序列化..." if __name__=="__main__": app.run() 效果展示: 返回结果拦截 作用: 主要是对返回的结果进行过滤 相应失败后根据错误信息做出不同的响应 … 格式:

    1.1K10

    Objective-C基础知识

    区别:局部变量可以进行初始化初始值而实例变量不能进行初始化 实例变量例子: @interface Person : NSObject { int age; int sex; } @end...,第二个是先计算后赋值 8.代码规范 8.1大括号要对齐 8.2遇到{要使用tab缩进 8.3方法和程序块之间加换行 8.4运算符两侧加上空格 8.5{前面要又空格 8.6{}成对出现...@implementation NewClassName 方法的实现 { } @end 13.方法声明 -(void) method: (int) arguments: 方法类型 返回类型 方法名...参数类型 参数名 +是类方法,-表示实例方法 传递参数时候要遵循传递原则,基本的都要该数据本身,指针类型传递的是对象的指针 14.方法调用或者发送消息 [类名或者对象名 方法名] 或者使用:...18.命名规则 类名首字母大写 实例变量,方法名字使用首字母小写,使用驼峰命名 19.

    63030

    Java反射机制的原理和用途

    a1的name值,使修改后的值生效 } } System.out.println("利用反射出的字段,修改字段值,修改后的name = " + a1.name); System.out.println...,并唤起方法:指定所属对象a1,并给对应参数赋值-----------"); // 9、唤起Method方法(执行) getMethod:第一个参数是方法名,后面跟方法参数的类 Method...比如,在Spring中,我们经常看到: ---- 针对上述的配置,我们Spring是怎么帮助我们实例化对象,并放到容器中去了呢? 没错,就是通过反射!!!!..."; //利用反射知识,通过classStr获取Class类对象 Class cls = Class.forName(classStr); //实例化对象.../>元素的ref属性得到该字符串值为“dataSource” String refStr = "dataSource"; //生成将要调用setter方法名 String

    93540

    面试必备 Vue 知识点

    ,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。...(Vue有配套的第三方类库,可以整合起来做大型项目的开发) ? 0.MVC 与MVVM的区别 MVC是后端的分层开发概念; MVVM是前端视图层的概念,主要关注于 视图层分离。...->vm}, //注意,不应该使用箭头函数来定义 method 函数 ,this将不再指向vm实例 props:{} ,// 可以是数组或对象类型,用于接收来自父组件的数据 //对象允许配置高级选项..._property的方式访问这些property。 访问data中定义的变量:vm.a,vm.$data.a 访问methods中的方法:vm.方法名() 访问watch方法:vm....$refs.ref属性值.变量名获取组件中的数据 this.$refs.ref属性值.方法名()获取组件中的方法 $parent 和 $children 获取 父/子组件的数据和方法 this.

    4K43

    如何理解Java中的隐藏与覆盖

    发生在子类于父类之间,是指在子类与父类之间或在同一类中定义具有相同的方法名,访问权限等的方发。 区别在于返回类型或参数列表。...子类实例变量/静态变量可以隐藏父类的实例/静态变量,总结为变量可以交叉隐藏 隐藏和覆盖的区别:   被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性   被覆盖的方法,在子类被强制转换成父类后...,但是可以改它自身的值,可以用ArrayList测试,final属性可以在运行的时候进行初始化,但是不能不出现初始化语句   2.final修饰的方法不能被覆盖,可以被重载   3.final修饰的类不能被继承...发生在子类于父类之间,是指在子类与父类之间或在同一类中定义具有相同的方法名,访问权限等的方发。 区别在于返回类型或参数列表。...子类实例变量/静态变量可以隐藏父类的实例/静态变量,总结为变量可以交叉隐藏 隐藏和覆盖的区别:   被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性   被覆盖的方法,在子类被强制转换成父类后

    4.2K10

    java菜鸟教程+视频笔记

    如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。 12、方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。...由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。 1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。 2....抽象类是不能实例化的,即不能被分配内存;而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:抽象类不能被分配内存,而static方法必须被分配内存。...接口是不能实例化的,即不能被分配内存,而static修饰的方法在类实例化之前就已经别分配了内存,这样一来矛盾就出现了:接口不能被分配内存,而static方法必须被分配内存。...: set获取元素的方法: List和Set是Collection的子接口,注意接口可以多继承,但是没有办法实例化, Map不是Collection的子接口; Ctrl+shift+o是导入多个包

    1.4K10

    微服务框架saf-8:saf-dubbo之method-config的apollo支持

    2.适用于云原生(K8S)下的微服务体系搭建,为技术中台提供底层支撑。 3.解放业务,使业务方专注于业务逻辑本身:通过注解以搭积木方式引入各式资源,每个资源都是一行注解,极大提升业务方产出效率。 ?...apollo配置规范 saf规定saf的所有methodConfig的配置必须放到命名空间saf.dubbo.method-config中,因为methodconfig的配置必须遵循一定规则,放入独立空间方便管理...注意,dubbo和method-config是固定字符串,不可以改,shoprpc是实际要配置的rpc,get-shop是方法名,name和timeout是methodConfig属性名。...SafDubboRPCInstanceNamesConfig.class) .withExistingValue(safDubboRPCConfigBean); binder.bind(nsPrefix, target); // 根据apollo配置实例化所有...dubbo的MethodConfig生效流程: 主要是在dubbo的ServiceConfig中,在ServiceBean完成propertiesValues注入后,会进行初始化,全部在私有方法和属性中进行

    61810

    Google Java编程风格规范(2020年4月原版翻译)

    这条规则也适用于foreach语句中的分号。 方法名或构造函数名与左括号留在同一行。 逗号(,)与其前面的内容留在同一行。...当存在连续自动换行时,缩进可能会多缩进不只4个空格(语法元素存在多级时)。一般而言,两个连续行使用相同的缩进当且仅当它们开始于同级语法元素。...4.6 空白 4.6.1 垂直空白 以下情况需要使用一个空行: 类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。...5.2.3 方法名 方法名都以lowerCamelCase风格编写。 方法名通常是动词或动词短语。 下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件。...非必需的 Javadoc 并不严格要求遵循第7.1.2、7.1.3和7.2节的格式化规则,尽管当然推荐这样做。

    1.6K20

    这款Java工具类库简直棒级了

    Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当; Hutool是项目中"util"包友好的替代...,我们常常被中文乱码所困扰,其实大多数原因是使用了不正确的编码方式解码了数据。...,此工具类的功能包括LocalDateTime和LocalDate的解析、格式化、转换等操作。...我是这么做的: 在每个数据库实例上找出最热门的5个 将每个数据库实例上的这5条数据按照热门程度排序,最后取出前5条 这个过程看似简单,但是你应用服务器上的代码要写不少。...来看看如何使用 对于Maven项目,首先在src/main/resources/config下放入cron.setting文件(默认是这个路径的这个文件),然后在文件中放入定时规则,规则如下: # 我是注释

    81130
    领券