----------------------android培训、java 培训、期待与您交流! ----------------------
今天看到有点晕额,特别是构造函数 和super ,弄的有点乱,执行顺序有点搞混淆了,
构造函数
第一:构造函数名与类名相同;
第二:构造函数不返回任何值,也没有返回类型;
第三:每一类可以有零个或多个构造方法;
第四:构造方法在创建对象时自动执行,一般不用显示地直接调用。
要注意的是,①构造函数不返回任何值,也没有返回类型,因此在构造函数前面不可添加各种基本数据类型,也不可添加引用类型。关键问题是,既然构造函数不返回任何值,部分人很可能会在构造函数前面加上void关键字,这正是问题所在。虽然没有返回类型,而且void也表示不返回任何值,但在构造函数前面最好不要添加void关键字,②5每一类可以有零个或多个构造方法。如果类没有构造函数,编译器会自动添加默认的无参构造函数,当调用默认的构造函数时,就会利用构造函数为类的成员变量进行初始化,当然不同的类型其默认的初始值不同。一旦用户定义了构造函数,则不会产生默认的构造函数。当有多个构造函数时,系统会根据产生对象时,所带参数的不同而选择调用不同的构造函数。③构造方法在创建对象时自动执行,一般不用显示地直接调用。构造函数的作用是对类的成员变量进行初始化操作,因此都是在创建类的对象是自动执行
Static
1.静态变量
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。final除外。
2.静态方法
它们仅能调用其他的static方法。
它们只能访问static数据。
它们不能以任何方式引用this或super
一般定义为静态方法的常为其它类提供一些工具使用,调用方面,类名.函数名
3.静态代码块
静态代码块只能定义在类里面,它独立于任何方法,不能定义在方法里面。
静态代码块里面的变量都是局部变量,只在本块内有效。
静态代码块会在类被加载时自动执行,而无论加载者是JVM还是其他的类,只执行一次,并优先于主函数。。
一个类中允许定义多个静态代码块,执行的顺序根据定义的顺序进行。
静态代码块只能访问类的静态成员,而不允许访问实例成员。
4. 静态类
通常一个普通类不允许声明为静态的,只有一个内部类才可以
final
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
static final用来修饰成员变量和成员方法,可简单理解为全局常量
super
Java中super用法:假设类A派生出子类B,类B又派生出自己的子类C,则B是C的直接父类,而A是C的祖先类。super代表的就是直接父类。若子类的数据成员或成员方法名与父类的数据成员或成员方法名相同,当要调用父类的同名方法或使用父类的同名数据成员时,可用关键字super来指明父类的数据成员和方法。
super的使用方法有三种
(1)用来调用直接父类的构造方法,其使用形式如下:super(参数)
(2)用来访问直接父类隐藏的数据成员,其使用形式如下:super.数据成员
(3)用来调用直接父类中被覆盖的成员方法,其使用形式如下:super.成员方法(参数)
----------------------android培训、java 培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima