如今,Java已是业界最流行的软件技术之一,在历年的编程语言排行榜中均稳均前三。论起原因,在于JAVA在各平台独立性、可移植性和厂商独立性方面的出色表现,Java已在世界范围内成为大多数企业、机构和团体的IT基础设施的重要组成部分。想学好JAVA,小编认为下面这些编程的思想很重要。
在一个类中,所有成员变量在定义时的初始化在构造函数进行初始化之前完成。就是说,先进行定义时的初始化,然后再是构造方法里的初始化。
1、不同类型的对象可能有相似的操作,在抽象的过程中把“相似”抽象出同一个方法名,因此进行方法的重载可以使得同名方法接受不同类型、不同数量的参数,从而对该操作的行为进行具体的控制;
2、构造方法的存在要求必须支持方法重载。因为构造方法必须与类同名,又可能存在需要对类的成员进行不同程度的初始化(体现在构造方法的参数的类型和数量),因此构造方法必须重载。
(三)如何判断方法重载?判断方法的重载是根据“方法名”、“方法参数”和“方法参数的顺序”,方法的重载必须满足以下条件:
1、在使用重载时只能通过不同的参数样式。例如:不同的参数类型、不同的参数个数、不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
2、不能通过“访问权限”、“返回类型”、“抛出的异常”进行重载;
3、方法的异常类型和数目不会对重载造成影响;
4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
(四)方法的参数如果有基本类型对重载有什么影响?因为基本类型会自动从较小类型提升到较大类型,因此如果传入的int,但是类中只有f(long)和f(float),因为没有f(int),因此int自动提升到long,从而调用f(long),提升的顺序是byte-char-short-int-long-float-double。
(五)什么叫重载的二义性?如果在重载方法时,其他的都相同,仅仅是返回类型不同,则会出现二义性,比如f(){}和int f(){return 1;}。
1、如果调用int i = f();,则编译器能正确找到所调用的方法;
2、如果仅仅调用f();,则编译器没有任何条件来确定到底应该调用哪个方法;
所以,不能根据返回类型来重载。
(六)为什么在方法体内定义的局部变量必须显式初始化?像java的基本类型,在定义类的成员变量时如果没有显式初始化,则会隐含地初始化为0或false等。但是在方法体内定义时必须进行显示初始化,因为编译器会认为这是程序员的一个“粗心的错误”,有可能他自己并不需要定义或者不是定义这种类型,显式初始化会起到一个提示程序员的作用。
(七)编译器依次主要做的三件事当构建一个类的实例时,编译器依次主要做以下三件事情:
1、为对象分配内存空间;
2、初始化对象中实例变量的值,初始化值可以是缺省值或按指定的方式初始化。“指定的方式”可能是直接赋值、表达式赋值或调用其他任何方法赋值;
3、调用对象的构造方法。
(八)必要的时候静态变量只有在必要的时候才执行初始化,它只在第一次使用时初始化,然后就一直存在供其他实例使用。“必要的时候”指:创建对象时、用类名直接访问时、在装载类时。
(九)构造方法构造方法即使没有显式使用static关键字,它实际上是一个静态方法。
(十)JAVA初始化顺序JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的,静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。
关注西安java开发培训微信公众号“蓝鸥西安”了解更多专业技术资讯。蓝鸥线上学习平台鸥课学院,是蓝鸥旗下的在线教育平台。鸥课学院专注整合优势教学资源、打造适合在线学习并能保证教学结果的优质教学产品,为用户提供满足自身成长和发展要求的有效服务。