---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------
构造函数
每个类都默认带有一个无参的构造函数
class Person{ //public Person(){} 虚拟机默认定义的 }
如果程序员自己定义了一个构造函数的话,java虚拟机就不会再给类默认定义一个无参的构造函数这时候如果还需要无参的构造函数的,就必须程序员自行定义
Class Person{ private int age; public Person(int age){ this.age = age; } public Person(){} }
构造函数的访问权限是可以定义的,如果将public 改为private,再加上一些代码,就可以实现单例设计了,单例里边还设计了static和final修饰符,static就是静态。所以先解释一下静态
静态
静态就是将类的成员定义为静态的,这个成员属于类,而不需要任意对象来获得它的使用权,只要类的.class字节码被加载进内存,类的静态成员就一起被加载进内存中,通过类名就可以直接对其进行调用。那什么时候要用到静态呢?
如果一个成员变量时属于所有类的对象所共有的,比方说人这个类的对象都有2个眼睛,一个鼻子什么的,就可以将眼睛和鼻子定义成静态。另外比如Color类中的一些表示颜色种类的成员:RED,YELLOW,INK等这些成员属于Color类,将它们定义成静态的要使用颜色的时候,就不用先实例一个Color对象再来获得RED属性了,直接用Color类名就可以调用了。
final
final可以用来修饰类、成员变量、形参、方法,修饰类的时候表示这个类不可以再被继承,修饰成员变量和形参的时候表示这个变量不能再被改变,其中修饰成员变量时,要么在定义成员变量时初始化赋值,要么在构造函数中赋值,当成员变量是静态的时候,就只能在定义的同时赋值,因为静态成员变量属于类,在类加载进内存的时候就必须存在,而不能等要创建类对象的时候再来初始化。
通过单例设计模式,可以很好的理解static和constructor
public class Single { //将构造函数私有化,外人无法创建对象 private Single(){ } //在类内部定义一个类的对象 private static Single s = null; //提供一个方法让外人获得类内部对象,该设计方法为懒汉式设计,在别人要用的时候再创建类对象 public static Single getInstance(){ //通过双重判断来提高效率 if(null == s){ //通过锁来保证只有一个对象被创建 synchronized (Single.class){ if(null == s) s = new Single(); return s; } } return s; } }
另外,java中的this关键字也要清楚
this只要注意两个地方:1、在构造函数中出现的this表示被构造的对象
2、在方法里边出现的this表示调用该方法的对象
另外,在类内部,系统自带this指针,我们在类内部调用本类方法不用写类名就是因为this这个家伙。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关推荐
描述继承中子类与父类构造函数,静态块的执行顺序
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
java中的构造代码块和构造函数.pdf
8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8....
java代码-使用java解决在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄的源代码 ——学习参考资料:仅用于个人学习使用!
3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private) */ public class Test{ public Test(){ System.out.println("类Test构造方法被执行 6"); } { System.out.println("类...
没错,mysql-connector源码,也许是你需要的
继承当中的构造函数规则 马克-to-win Java视频详细介绍
继承 构造函数 马克-to-win java视频的详细描述的介绍
继承当中的构造函数规则 马克-to-win java视频的详细介绍
钉钉 Java SDK 钉钉官方提供了统一的SDK,使用SDK可以便捷的调用服务端API。注意:此SDK包含原有TOP接口,原有TOP接口可以继续正常调用,没有影响。下面是使用SDK调用API的请求示例: JAVA: DingTalkClient client...
计算机后端-Java-Java核心基础-第30章 动态代理与Java8新特性 18. 构造器引用与数组引用
构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,传入参数为两个Point类实例。然后设计一个测试类...
复制构造函数引用this指针静态成员.ppt
构造函数 this 指向:1 构造函数 this 指的是对象实例2 原型对象函数里面也 this 也是指向实例对象// 构造函数function Student
计算机后端-Java-Java核心基础-第13章 面向对象05 14. super调用构造器.avi
JAVA题库习题及答案,JAVA题库习题及答案,JAVA期末试卷题库习题及答案,JAVA题库习题及答案
创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数...
计算机后端-Java-Java核心基础-第11章 面向对象03面向对象03 12. 构造器练习:三角形.avi
计算机后端-Java-Java核心基础-第11章 面向对象03面向对象03 11. 构造器练习:基本使