牛客网java刷题笔记 2019-1-4
1.java中可以用类中构造器调用其他类构造器(这个和C++中构造函数很类似)用于初始化程序变量值, 构造器和方法的区别:
- 功能和作用的不同 构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到:Demo d = new Demo(); 相反,方法的作用是为了执行java代码。 修饰符,返回值和命名的不同 构造器和方法在下面三个方便的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。 返回类型也是非常重要的。方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。 两者的命名不同。构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。
//this用法 public class Platypus { String name; Platypus(String input) { name = input; } Platypus() { this("John/Mary Doe"); } public static void main(String args[]) { Platypus p1 = new Platypus("digger"); Platypus p2 = new Platypus(); } }
在上面的代码中,有2个不同参数列表的构造器。第一个构造器,给类的成员name赋值,第二个构造器,调用第一个构造器,给成员变量name一个初始值 “John/Mary Doe”.
//super用法 class Mammal { void getBirthInfo() { System.out.println("born alive."); } } class Platypus extends Mammal { void getBirthInfo() { System.out.println("hatch from eggs"); System.out.print("a mammal normally is "); super.getBirthInfo(); } }
在上面的例子中,使用super.getBirthInfo()去调用超类Mammal中被重载的方法。
构造器使用super去调用超类中的构造器。而且这行代码必须放在第一行,否则编译将出错。看下面的例子:
public class SuperClassDemo { SuperClassDemo() { } } class Child extends SuperClassDemo { Child() { super(); } }
在上面这个没有什么实际意义的例子中,构造器 Child()包含了 super,它的作用就是将超类中的构造器SuperClassDemo实例化,并加到 Child类中。 汇总区别表格如下:
主题 构造器 方法 功能 建立一个类的实例 java功能语句 修饰 不能用bstract, final, native, static, or synchronized 能 返回类型 没有返回值,没有void 有返回值,或者void 命名 和类名相同;通常为名词,大写开头 通常代表一个动词的意思,小写开头 this 指向同一个类中另外一个构造器,在第一行 指向当前类的一个实例,不能用于静态方法 super 调用父类的构造器,在第一行 调用父类中一个重载的方法 继承 构造器不能被继承 方法可以被继承 编译器自动加入一个缺省的构造器 自动加入(如果没有) 不支持 编译器自动加入一个缺省的调用到超类的构造器 自动加入(如果没有) 不支持
- 通过 ClassLoader 寻找和装载 class 文件 解释字节码成为指令并执行,提供 class 文件的运行环境 进行运行期间垃圾回收 提供与硬件交互的平台
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/290516.html