java 构造函数new过程、访问修饰符权限、Static、Fianl

来源:互联网 发布:周年庆特效源码 编辑:程序博客网 时间:2024/05/14 12:22

构造函数的作用

在被赋值给引用之前调用

介入new 的过程

完成初始化

Person p = new Person();

过程:

1.加载静态(static)成员变量 2.静态代码块 3.成员变量 4.执行构造方法

格式:访问修饰符 类名(参数列表){方法体}

注意:1.构造方法名称必须和类名必须一致 2.没有返回值 3.系统会自动生成一个无参构造方法。4.当显示定义构造后,系统自带无参的构造方法失效。

or

Java语言中,每个类都至少有一个构造方法;

如果类的定义者没有显式的定义任何构造方法,系统将自动提供一个默认的构造方法:

默认构造方法没有参数

默认构造方法没有方法体

Java类中,一旦类的定义者显式定义了一个或多个构造方法,系统将不在提供默认的构造方法;

当父类和子类有Static时,先初始化父类Static,再初始化子类的Static,再初始化父类的其他成员变量->父类构造方法->子类其他成员变量->子类的构造方法。
父类上层还有父类时,总是先执行最顶层父类的Static-->派生类Static-->派生类Static-->.......-->子类Static-->顶层父类的其他成员变量-->父类构造方法--> 派生类的其他成员变量 --> 派生类构造方法--> ...............-->子类其他成员变量-->子类构造方法

Eg:

类的定义:

class Person {

         int age;

         void setAge(int w) { age = w; }

}

等价于:  

 class Person{

         int age

         Person() {}

         void setAge(int w) { age = w; }

}

 

构造方法重载必须遵循构造方法和方法重载的规则。

 

 

在子类的构造方法中可使用super(argument_list)语句调用父类的构造方法

如果子类的构造方法中没有显示地调用父类构造方法,则系统默认调用父类无参数的构造方法

如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错**

 

Java引用类型成员变量默认初始化原则

 


访问修饰符(修饰成员变量/方法)

 

Public(公共)

Protected(受保护)

默认

Private(私有)

同类中

同包不同类

 

同包子类

 

不同包子类

 

 

不同包不同类

 

 

 

 


 

类的访问修饰符

public:任何包中的类都可以访问该类

默认值:同一个包中的类可以访问该类

 

Static:

在Java类中声明变量、方法和内部类时,可使用关键字static做为修饰符。

static标记的变量或方法由整个类(整个应用)共享,如访问控制权限允许,可不必创建该类对象而直接用类名加‘.’调用。

static成员也称类成员或静态成员,如:类属性、类方法、静态方法等

 

 

Fianl:

final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。

final标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,然后才能使用

Final修饰的变量就成常量(值不能被改变)

Final修饰的类不能被继承。

Fianl修饰的方法不能被重写。

结合 publicstatic 使用

 

 

 

垃圾回收机制:

System.gc();//开发人员不能干涉垃圾回收机制回收那个对象 只能通知JVM可以回收垃圾了