面向对象——类的成员之成员变量、构造器
2017-09-02 10:00
127 查看
面向对象——类的成员之成员变量、构造器
1.成员变量普通变量:权限修饰符 数据类型 变量名。如 private String name;
注:数据类型可以是8种基本数据类型,或者引用数据类型。
静态变量:在普通变量的基础上,加上static修饰符。如:public static int num;
注:静态变量属于类,在内存只有一份,不会随着类的创建而创建。因此常用于计数!
静态常量:既有static修饰,又有final修饰。public final static int num=1000;
注:static final可以交换位置,常用的还有Math.PI等。
成员变量如果声明时没有赋初始值,就是该数据类型的默认值。
final修饰成员变量:可以声明时初始化,也可以在构造器中初始化,但是不能二次赋值。
2.构造器
构造器的格式要求:
名字与类名相同,
没有返回值也不能有void
其中可以包含return;用于结束方法,但不能返回任何东西。
构造器必知:如果当前类不提供构造器,编译器自动为类添加一个空参构造器。如果当前类有其他的构造器,则编译器不再提供空参构造器。
非常重要:由于构造子类前一定会先构造父类,这时候如果子类不显示调用父类的构造器,则默认调用父类空参构造器。如果父类有其他构造器无空参构造器,这时候出现编译异常(找不到父类的空参构造器)。
代码示例:
class Creature{
public Creature(){
System.out.println("I'm a creature");
}
}
class Animal extends Creature{
public Animal(){
System.out.println("I'm a animal");
}
}
class Person extends Animal{
public Person(){
System.out.println("I'm a person");
}
}
public class Test{
public static void main(String[] args) {
Person person=new Person();
}
}
输出:I'm a creature
I'm a animal
I'm a person
关于创建对象时的执行顺序
代码示例一:
public class Construct2 {
④ private String name="AA";
① private static int num=10;
② static{
System.out.println("静态块1");
}
⑤ {
System.out.println("初始化块1");
}
③ static{
System.out.println("静态块2");
}
⑦ public Construct2(){
System.out.println("构造器");
}
⑥ {
System.out.println("初始化块2");
}
public static void main(String[] args) {
Construct2 tCon=new Construct2();
}
}
圆圈代表步骤。执行结果:
静态块1
静态块2
初始化块1
初始化块2
构造器
根据执行结果可以看出:创建对象时属性初始化的顺序为:
静态变量、静态代码块(随类加载)==>普通变量、初始化块(顺序执行)==>构造器
注:如果子父类都含有静态变量,加载顺序为:
父类静态结构(静态块、静态变量)=>子类静态结构=>父类其他结构=>子类其他结构
对象实例化的全过程
jvm读取.class文件,并加载进内存,先加载子类的父类
堆开辟内存,分配地址
在对象的空间内,对对象空间属性进行默认初始化(各种类型数据默认值)
构造函数初始化
在构造函数中,先调用父类构造器初始化
在调用子类构造器初始化
初始化完毕,把地址赋值给对象的引用。
相关文章推荐
- 面向对象 成员变量和局部变量
- 关于Java的构造器和直接为成员变量赋值的区别
- Java语言基础{Java_se(05)}-面向对象-封装-构造方法-成员变量,局部变量
- java语言基础(26)——面向对象(类的设计及成员变量定义注意事项)
- 面向对象的编程——成员变量赋值(2)
- 面向对象——OOP(一)(落地法则、局部变量与全局变量、方法及重载、构造器及重载、代码块、内部类及匿名内部类、对象的创建与使用)
- Java基础:面向对象(1)--对象的概念、成员变量与局部变量、匿名对象、类的封装
- 面向对象(成员变量和局部变量)
- 12-面向对象(static关键字-成员变量和静态变量的区别-数据共享 13-面向对象(static关键字-注意事项) 14-面向对象(static关键字-main函数解析 15-面向对象(stat
- 黑马程序员——Java基础——面向对象——局部变量和成员变量
- 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)
- C++面向对象—成员函数与成员变量的实现机制学习笔记(1)
- 面向对象_静态变量和成员变量的区别
- 【java】编写一个学生类,提供name,age,gender,phone,address,email成员变量, * 且为每个成员变量提供setter、getter方法。为学生类提供默认的构造器和带
- 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
- 成员变量、构造器的运行顺序
- 面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)
- 成员变量在构造器之后
- 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
- 黑马程序员_Java基础_面向对象(概述、类与对象关系、成员变量、封装private、构造函数和构造代码块、this关键字)