默认构造函数

java继承

微笑、不失礼 提交于 2019-12-04 15:06:15
类的继承:子类拥有父类非private方法和属性 类的继承,多继承会耦合度高 有与子类同名无参构造函数,则默认调用父类无参构造函数;;;;;与子类同名有参构造器,但无super,则默认调用父类无参构造器 有super(x,x,x)则看是调用几个参数的构造函数 实例化子类后,优先调用父类构造函数及构造函数的方法 class A{ A(){ print("A()") } A(int n){ print("A(n)") this.n = n } } class B extends A{ B(){ super(1) print(B()) } B(int n){ print("B(n)") this.n = n } } B b = new B() B b = new B(100) 输出: A(n) B() -------- A() B(n) 来源: https://www.cnblogs.com/acg88688/p/11870569.html

Lombok 学习指南

与世无争的帅哥 提交于 2019-12-03 23:35:07
转自:https://segmentfault .com /a/11900000208 64 572 一、Lombok 简介 Lombok 是一款 Java 开发插件,使得 Java 开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的 Java 模型对象(POJO)。 在开发环境中使用 Lombok 插件后,Java 开发人员可以节省出重复构建,诸如 hashCode 和 equals 这样的方法以及各种业务对象模型的 accessor 和 toString 等方法的大量时间。 对于这些方法,Lombok 能够在编译源代码期间自动帮我们生成这些方法,但并不会像反射那样降低程序的性能。 二、Lombok 安装 2.1 构建工具 Gradle 在 build.gradle 文件中添加 lombok 依赖: dependencies { compileOnly 'org.projectlombok:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10' } Maven 在 Maven 项目的 pom.xml 文件中添加 lombok 依赖: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok

深入理解类

匿名 (未验证) 提交于 2019-12-03 00:43:02
类成员 成员修饰符的顺序 [特性] [修饰符] [核心声明] a)修饰符:必须放在核心声明之前,如果有多个修饰符可以是任意顺序 b)特性:必须放在核心声明和修饰符之前,如果有多个特性可以任意顺序 实例成员(是类的每个实例拥有自己各个类成员的副本) 静态字段(静态字段被类的所有实例共享) 静态函数成员 a)静态函数成员不能访问实例成员,然而,它们能访问其他静态成员 成员常量 a)用于初始化成员常量的值在编译时必须是可计算的,而且通常是一个预定义简单类型或者由它们组成的表达式 b)不能在成员常量声明以后给它赋值 常量与静态量 a)成员常量表现得像静态值,它们对类的每个实例都是"可见的",而且即使没有实例也可以使用 b)与真正的静态量不同,常量没有自己的存储位置,而是在编译时被编译器替换 c)虽然常量成员表现得像一个静态量,但不能将常量声明为static 属性 a)它是命名的类成员 b)它有类型 c)它可以被赋值和读取 d)它是一个函数成员 e)它不为数据存储分配空间 f)它执行代码 属性声明和访问器 set访问器 a)拥有一个单独的、隐式的值参,名称为value,与属性的类型相同 b)拥有一个返回类型void get访问器 a)没有参数 b)拥有一个与属性类型相同的返回类型 属性与公共字段 a)属性是函数型成员而不是数据成员,允许你处理输入和输出,而公共字段不行 b)属性可以只读或只写

JDK7 新特性

匿名 (未验证) 提交于 2019-12-02 21:53:52
想更详细的熟悉JDK7新特性可以浏览 官方介绍 JDK7新特性的目录导航: 二进制字面值 switch 语句支持 String try-with-resources catch 多个类型异常 字面值中使用下划线 类型推断 改进泛型类型可变参数 其它 二进制字面值 在Java SE 7,整数类型(byte,short,int 和 long)也可以使用二进制数。要指定二进制,请添加前缀0b或0B编号。以下示例显示了二进制: // 一个 8-bit 'byte' 值: byte aByte = (byte)0b00100001; // 一个 16-bit 'short' 值: short aShort = (short)0b1010000101000101; // 一些 32-bit 'int' 值: int anInt1 = 0b10100001010001011010000101000101; int anInt2 = 0b101; int anInt3 = 0B101; // B可以是大写 或 小写. // 一个 64-bit 'long' 值。 注意 'L' 后缀: long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L; 二进制可以使数据之间的关系比以十六进制或八进制更明显

单例模式

倾然丶 夕夏残阳落幕 提交于 2019-12-02 18:01:58
使用 private关键字将默认构造函数定义私有防止创建实例。 使得对象在内存中只存在一个 可参考代码。 public class SimpLeMath { private SimpLeMath() { } private static SimpLeMath simple { get; set; } public static SimpLeMath GetSimpLeMath(){ if(simple==null){ simple=new SimpLeMath(); return simple; }else{ return simple; } } } 按照以上代码 构造函数私有时,实例不可以创建只有调用自身的GetSimpleMath()方法。 来源: https://www.cnblogs.com/cdjbolg/p/11756674.html

C# 与 Java 的一些差异

荒凉一梦 提交于 2019-12-02 14:35:43
如果你是 Java 开发人员,则可以在 Xamarin 平台上充分利用你的技能和现有代码,同时获得 C# 的代码重用优势。你会发现 C# 语法与 Java 语法非常相似,这两种语言提供非常类似的功能。此外,你会发现 C# 的特有功能,这些功能将帮助你轻松进行开发工作。 概述 本文介绍面向 Java 开发人员的 C# 编程,主要侧重于在开发 Xamarin.Android 应用程序时会遇到的 C# 语言功能。 此外,本文说明了这些功能与其 Java 对应项的区别所在,并介绍了在 Java 中不可用的重要 C# 功能(与 Xamarin.Android 相关)。 包含指向附加参考资料的链接,因此你可以将本文用作一个“起点”以进一步研究 C# 和 .NET。 如果你熟悉 Java,那么对于 C# 语法的使用便可以轻松上手。 C# 语法与 Java 语法非常相似 – C# 是“大括号”语言,如 Java、C 和 C++。 在许多方面,C# 语法读起来像是 Java 语法的超集,但是有一些重命名和新增的关键字。 可以在 C# 中找到 Java 的许多主要特征: 面向对象的基于类的编程 强类型化 支持接口 泛型 垃圾回收 运行时编译 Java 和 C# 都被编译为中间语言,在托管执行环境中运行。 C# 和 Java 都是静态类型,这两种语言将字符串视为不可变类型。 这两种语言使用单根类层次结构

隐式转换

对着背影说爱祢 提交于 2019-12-02 14:26:36
当类构造函数只有一个参数或除了第一个参数外其余参数都有默认值时,则此类有隐含的类型转换操作符(隐式转换),但有时隐式转换并不是我们想要的,可在构造函数前加上关键字explicit,来指定显式调用。 void fun(CTest test); class CTest { public: explicit CTest(int m = 0); } fun(20);//error 隐式转换 fun(static_cast<CTest>(20)); //ok 显式转换 来源: https://blog.csdn.net/weixin_37597675/article/details/102772432

枚举注解反射整合详解

梦想的初衷 提交于 2019-12-02 04:54:53
一丶枚举 1 ** 2 * 一、枚举类的使用 3 * 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 4 * 2.当需要定义一组常量时,强烈建议使用枚举类 5 * 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 6 * 7 * 二、如何定义枚举类 8 * 方式一:jdk5.0之前,自定义枚举类 9 * 方式二:jdk5.0,可以使用enum关键字定义枚举类 10 * 11 * 三、Enum类中的常用方法: 12 * values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。 13 * valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。 14 * toString():返回当前枚举类对象常量的名称 15 * 16 * 四、使用enum关键字定义的枚举类实现接口的情况 17 * 情况一:实现接口,在enum类中实现抽象方法 18 * 情况二:让枚举类的对象分别实现接口中的抽象方法 19 * 20 * @author shkstart 21 * @create 2019 上午 10:17 22 */ 23 public class SeasonTest { 24 ​ 25 public

java变量,初始化快,构造函数的执行顺序

时间秒杀一切 提交于 2019-12-01 22:30:43
对于JAVA中类的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略。当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙。而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽。不管基于什么原因,我认为,对于java类中的初始化问题,有必要深入的了解。Java类的初始化,其实就是它在JVM的初始化问题(类加载的问题),对于它在JVM中的初始化是一个相当复杂的问题,是给专家们来探讨的,所以在这里我只是对一些容易忽略的问题,发表一下个人观点: 1,在一个类的内部(不考虑它是另一个类的派生类):很多人认为,类的成员变量是在构造方法调用之后再初始化的,先不考虑这种观点的正确性,先看一下下面的代码: [java] view plain copy class Test01...{ public Test01( int i)...{ System.out.println( "Test01 of constractor : " + i); } } public class Test02 ...{ private Test01 t1 = new Test01( 1 ); private int n = 10 ; public Test02()...{ System.out.println( "Test02 of constructor : " + n); } private

C# 反射简单介绍

試著忘記壹切 提交于 2019-12-01 10:18:52
原文: https://blog.csdn.net/wu1020300665/article/details/82958455 1.什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个对象的类型在编译时还不知道。 2.反射简单例子 平时我们写调用dll都是添加引用,然后new对象,如 通过反射,我们可以实现同样的效果,而不需要添加引用, 2.1我们先加载需要反射的dll (3种方式,第一种最常用(通常我们把需要反射的dll丢在当前路径下面)) Assembly assembly = Assembly.Load("Ruanmou.DB.Sqlserver");//1 动态加载 默认加载当前路径的dll文件,不需要后缀 //Assembly assembly1 = Assembly.LoadFile(@"E:\online7\20160928Advanced7Course2Reflection\MyReflection\MyReflection\bin\Debug\Ruanmou.DB.Sqlserver.dll");// 必须是完整路径 //Assembly assembly2 = Assembly.LoadFrom(