首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个简单的方法:截取子类名称中不包含基类后缀的部分

基类是 MenuItem,子类是 WalterlvMenuItem、FooMenuItem。...在代码中,我们可能会为了能够一眼看清类之间的继承(从属)关系而在子类名称后缀中带上基类的名称。但是由于这种情况下的基类不参与实际的业务,所以对外(文件/网络)的名称通常不需要带上这个后缀。...本文提供一个简单的方法,让子类中基类的后缀删掉,只取得前面的那部分。 在这段代码中,我们至少需要获得两个传入的参数,一个是基类的名称,一个是子类的名称。...另外,我们还需要有一些约束,必须有一个类型是另外一个类型的子类。于是我们可能必须来使用泛型做这样的约束。...在截取完子串之后,我们还需要验证截取的字符串是否已经是空串了,因为父子类的名称可能是完全一样的(虽然这样的做法真的很逗比)。

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

    赶在 520 之前给您来份 Java 的面向对象小抄

    来访问对象实例中的内容,比如调用方法、访问成员变量等。 p.printAll() 3.3. 对象数组 对象数组,这个数组中实际上引用变量的数组。...// 创建了一个对象数组,数组中的每一个元素都是引用变量,都可以指向该类型的对象实例。此时创建之后,每个数组元素并没有指向。...子类不继承父类的构造方法。 4.2.1. 成员变量的隐藏 当子类声明的成员变量的名字和从父类那边继承来的成员变量的名字相同时,那么子类就会隐藏继承的成员变量。...因为,子类的构造方法在默认情况下会调用父类不带参数的构造方法,因此在实现类的时候,如果实现了带参数的构造方法,那么一定要添加一个无参数的构造方法,以防子类出错。 4.2.4....简单的说,就是把子类的对象实例赋值给父类的引用变量,父类的引用变量就可以访问子类的成员变量或者方法,因为赋值的子类对象实例不同,因此呈现多态。

    64220

    揭秘Java方法的返回值,从void到诸多数据类型,有两下子!

    代码作用  这段代码演示了如何在Java中定义和使用类、静态方法以及基本的算术运算和数学公式计算。特别是,它展示了如何调用方法并打印结果。代码执行流程Java虚拟机(JVM)启动,并查找main方法。...小结  这段代码是一个很好的Java编程示例,展示了如何在类中定义静态方法,如何在main方法中调用这些方法,并如何使用System.out.println打印结果。...代码作用  这段代码演示了如何在Java中定义类、创建对象、使用构造函数初始化对象以及通过getter和setter方法访问和修改对象的属性。...返回值的多态  Java中的继承与多态概念可以拓展到方法的返回值类型。具体来说,如果一个方法的返回值类型是父类或接口类型,那么该方法可以返回其子类或实现类的对象。...在getAnimal方法中根据参数type的值返回对应的Animal子类对象,在main方法中调用getAnimal方法,分别将返回值赋值给a1和a2变量,并输出它们的name属性的值。

    48341

    100道最新Java面试题,常见面试题及答案汇总

    下面的例子中,const_val被声明且赋值为常量100: Private Final int const_val=100 而当一个方法被声明为final之后,它不能被子类覆盖,而且会比其他方法都快。...答案:如果使用了继承层次结构,那么这个类就可能既是一个类的父类也是另一个类的子类,如下例中的大陆类既是世界类的子类,同时也是国家类的父类。...答案:可以定义重名的方法,但是其参数的数量和类型是不同的,调用哪个方法取决于传递的参数。 例如在下面的类中,我们有两个具有相同名称但不同参数的打印方法。...,如C语言?...答案:可以,在基于原生开发的情况下,我们可以在Java类中定义公共静态方法,但是不执行,然后用另外一种语言(如C)实现。 Q74:如何在Java中定义析构函数?

    5.2K21

    有史以来最全的异常类讲解没有之一!爆肝3万字,终于把Python的异常类写完了!最全Python异常类合集和案例演示,第一部分

    Exception 在Python中,Exception是所有异常的基类。当你定义一个自定义异常时,通常会继承自Exception(或者它的某个子类)。...代码案例 下面的案例中会故意引发一个ZeroDivisionError(它是Exception的一个子类),并展示如何在except块中处理它。...def init(self, name)::定义了类的构造函数,它接受一个参数 name 并将其赋值给实例的 name 属性。...EnvironmentError 在Python中,EnvironmentError是一个已经废弃的异常类,它曾经作为所有与操作系统环境相关的异常(如文件操作错误、权限问题等)的基类。...LookupError LookupError 是 Python 中的一个基类异常,它用于指示在数据查找过程中发生的错误。这个基类有两个常见的子类:KeyError 和 IndexError。

    15810

    大数据--scala学习第一章:基础第二章:控制结构和函数第三章:数组第四章:字典和元组第五章:类第六章:对象第七章:包和引入第八章:继承第九章文件和正则表达式第十章特质:接口第十一章操作符第十二章函

    调用该函数的时候可以只用给出str的参数值就行,其他两个参数会使用默认参数,也可以在提供参数时给出参数名赋值参数,可以不按照顺序。...6、主构造器是与类定义交织在一起定义的,如果没有参数则是默认的主构造器。...如果带参数则在类名后的()中定义,如果使用表5.1中定义的参数,将在类中为字段,如果不包含val和var,没有方法使用的情况下改参数只用于语句访问,如果方法使用了就是对象私有字段。...3、测试某个对象属于哪个类使用isInstanceOf方法,当对象是该类或者子类的对象时返回True. 4、Scala中也有protected修饰符,与java中的一样 5、子类的辅助构造器不能调用父类的构造器只能通过子类的主构造器进行调用形式如下...8、对象构造是顺序:父类构造器-子类构造器 9、Scala中基本类型和until类型都继承与Anyval类,其他类都是AnyRef的子类,而Any类是整个继承层级的根节点类似于java中的object类

    4.4K20

    Java入门必背100条

    29、数组的长度一旦确定就不能修改,初始化完成,长度就定了。 30、数组静态初始化:数组元素的初始化和数组元素的赋值同时进行。...例如:int a[ ] = new int [ ] { 1,2,3 }; 31、数组动态初始化:数组元素的初始化和数组元素的赋值分开进行。...58、super调用属性、方法: ①在子类的方法或构造器中,通过使用”super.属性”或”super.方法”的方式,显式的调用父类中声明的属性或方法,通常情况下,习惯省略”super.”。...③如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的默认方法,那么子类在没重写此方法的情况下,默认调用的是父类中的同名同参数的方法。–>类优先原则。...⑤如何在子类(或实现类)的方法中调用父类、接口中被重写的方法。

    1.2K20

    在有些情况下,如设置默认值时,在方法__init__()内指定这种初始值是可以的。可以这样设置属性,不需要再把这个变量添加进形参中。...子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。 1.子类的方法__init__() 创建子类的实例时,Python需要完成的任务是给父类的所有属性赋值。...错误分析:创建的类,有构造器:__init__()。调用方法,赋值实例,输出的时候,方法中没有print或者return。继承的时候就没有值,就显示None。...在这种情况下,可在前一个模块中导入必要的类。 ? 五,Python标准库 Python标准库是一组模块,安装的Python都包含它。可使用其它程序员编写好的模块了。...可使用标准库中的任何函数和类,为此只需在程序开头包含一条简单的import语句。 字典能将信息关联起来,但字典不记录键-值对的顺序。

    1.5K10

    面试官,不要再问我“Java虚拟机类加载机制”了

    对于静态字段,只有直接定义这个字段的类才会被初始化,因此通过其子类来引用父类中定义的静态字段,只会触发父类的初始化而不会触发子类的初始化。...需要注意的是数组类的加载,数组类并不通过类加载器加载,而是由Java虚拟机直接创建,但数组类的元素还是要依靠类加载器进行加载。...此处的类变量指的是被static修饰的变量,不包含实例变量,实例变量在对象实例化阶段分配在堆中。...如果将static中的打印语句去掉,那么下面这段代码的打印结果会是什么呢?...最开始的面试题中打印出父类静态块的方法就是这个原因。 由于父类的()方法先执行,也就意味着父类中定义的静态语句块要优先于子类的变量赋值操作。

    38110

    TS 常见问题整理(60多个,持续更新ing)

    add(x, y) { ... } } 2. null 和 undefined 是其它类型(包括 void)的子类型,可以赋值给其它类型(如:数字类型),赋值后的类型会变成 null 或 undefined...、子类实例都可以访问 protected age: number; // 只能在定义的类和子类中访问,不允许通过实例(定义的类的实例和子类实例)访问 private money: number...; // 只能在定义的类中访问,类的实例、子类、子类实例都不可以访问 constructor(name: string, age: number, money: number) {...重写(override) vs 重载(overload) 重写是指子类重写“继承”自父类中的方法 。...如何在 Node 中使用 TS 安装相关声明文件,如:@types/node; 因为 node 模块遵循 CommonJS 规范,一些 node 模块(如:express)的声明文件,用 export

    15.4K77

    JAVA知识总结

    通过记忆和练习,逐渐掌握了驼峰命名法,并且理解了变量和常量在程序中的不同用途。赋值时需要注意数据类型的匹配,避免类型不兼容的问题。...如何在Java中定义一个类和创建对象。...final变量: 一旦赋值,不能改变。 知识点 1、final类的使用: 不能被继承,通常用于定义一些工具类或不希望被扩展的类。...2、final方法的使用: 不能被子类重写,通常用于定义一些不希望被改变的方法。 3、final变量的使用: 一旦赋值,不能改变,通常用于定义常量。...2、方法重写中的异常规则: 子类重写的方法不能声明比父类方法更宽泛的检查型异常。 子类可以声明与父类相同的异常或更具体的异常,或者不声明任何异常。

    7710

    类加载机制你真的了解吗?

    但是数组类的元素类型(指数组类去除维度之后的类型,如String[] 数组的元素类型就是 String)是靠类加载器加载的。...如可以把子类对象赋值给父类引用,但是父类不可以直接赋值给子类(必须强转)或其他不相干的类型。 4)符号引用验证 最后一个阶段的验证发生在符号引用转换为直接引用的时候。...若把Child中的method0方法注释掉,则会去找父类Parent的method0,打印结果 parent method0 。...由于父类的 方法先执行,所以父类的静态代码块也优于子类执行。 如果类中没有静态代码块,也没有为变量赋值,则可以不生成 方法。...反射调用时,会触发类的初始化(如Class.forName()) 初始化一个类的时候,如其父类未初始化,则会先触发父类的初始化。 虚拟机启动时,会先初始化主类(即包含main方法的类)。

    56421

    JVM活学活用——类加载机制

    · 如果在数组初始化时没有对数组中的各元素赋值,那么其中的元素将根据对应的数据类型而被赋予默认的零值。  ...类的主动使用包括以下六种:   创建类的实例,也就是new的方式   访问某个类或接口的静态变量,或者对该静态变量赋值   调用类的静态方法   反射(如Class.forName(“com.Test”...))   初始化某个类的子类,则其父类也会被初始化   Java虚拟机启动时被表明为启动类的类(Java Test),直接使用java.ext命令来运行主类。...系统变量指定的路径中的所有类库(如javax....,开发者可以直接使用该类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。

    1K80

    如何用Java测试抽象类和接口?

    分别创建一个三角形、矩形、圆存入一个数组中,访问数组元素将各类图形的面积输出。   ...:"+s);//打印   }   }   class Rectangle extends Shape{//矩形的类,继承抽象类   double width;//定义成员变量,高和宽   double...· 分别创建一个三角形、矩形、圆存入一个数组中,   · 访问数组元素将各类图形的面积输出。   ...("圆的面积为:"+s);//打印   }   }   3、定义一个抽象类-水果,其中包括getWeight()方法,编写程序分别创建苹果、桃子、橘子三个类,创建若干水果对象存放在一个水果类型的数组中,...//创建橘子类,继承水果   double weight;//定义成员变量,重量   public Orange (double weight){//定义构造函数,给重量赋值   this.weight

    65230

    Java课程主要内容回顾

    写主函数(psvm): 主函数(main 方法)必须包含在类中,作为程序的入口点。 主函数的声明:public static void main(String[] args)。...在程序中,可以通过 String[] 形参接收传入的参数: 可以通过命令行向主函数传递参数,在程序中通过 args 数组获取。 .class 文件中包含了 字节码(Bytecode) 。...数组元素的赋值可以通过索引直接赋值,例如 numbers[0] = 10;。 数组的展示: numbers 是一个包含5个整数的一维数组,names 是一个包含3个字符串的一维数组。...方法的返回值,void和有返回值的情况下如何使用return? 方法可以有返回值,也可以没有(使用void)。有返回值的方法使用return关键字返回结果,void方法不返回任何值。...static:static 方法和变量属于类而不是特定的实例,可以通过类名直接访问。用于创建类方法和类变量,使得它们可以在不创建类的实例的情况下被访问。 final:用于修饰类、方法和变量。

    10710

    java 虚拟机内存划分,类加载过程以及对象的初始化

    而且,对于非数组类的加载阶段,准确的说是加载阶段中获取类的二进制字节流的动作行为 是多样性的 可以使用系统提供的引导类加载器 也可以用户自定义的类加载器 开发人员可以通过定义自己的类加载器去控制字节流的获取方式...(重写类加载器的loadCalss()方法) 数组类不同 数组类本身不通过类加载器创建 由java虚拟机直接创建 但是数组的元素类型 最终是靠类加载器去创建的 验证 确保Class文件的字节流中包含的信息符合当前虚拟机要求...而且父类早于子类,所以最早执行的肯定是Object的 此方法把所有类的静态变量也就是类变量的赋值动作执行结束,而且静态代码块也已经执行结束,而且顺序是父类早于子类的 也就是说至此,所有的静态变量都已经分配内存空间...,也都是已经设置好的值了,包括父类的所有静态变量 静态变量以及静态代码块的执行都是在这里,显然他们是早于构造方法的执行的 但是如果静态变量赋值或者代码块中赋值中使用到了其他的方法,那么这个方法将会提早执行...,一样先执行 静态变量和静态代码块优先级相同,代码块在下面,所以先打印了  ""构造方法""   然后打印了""静态方法"" 4).此时类加载结束了进入主函数,主函数中先打印了分隔符"---------

    81230

    Java 回顾 ( Revisiting Java )

    换一种说法,多态即允许将子类对象的引用赋值给父类对象的引用,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。...继承的IS-A测试,即“足球”IS-A“球”,总得满足这样的关系才好说继承,就像你不太好意思继承隔壁王叔叔财产。 继承的意义何在?...一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见; 8)实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。...] type 如: %,6.1f 为6位逗号分隔,1位小数的浮点数 谈谈异常吧,谁能保证自己的程序不出问题呢?...与其系统运行的时候报一大堆乱七八糟的错误trace,早早地预见并处理一下,以自己的方式处理或者打印它,总要漂亮些吧?

    1.6K20
    领券