关于类的使用,一些简单知识的整理,看看有什么比较常用的,有意思的进行一下总结和梳理。
一个完整的类包括变量,方法,构造器。
先从变量的修饰谈起,
这是代码中一种必将常见的,有4个修饰的情况,一般很难修饰那么多。
Public static final int JAVA_STUDY=5;
Public是指封装的形式,面向对象的3大特征之一,这里修饰变量,是指这个变量可以再其他任何地方被调用。 同样的还有private和protected,可以看上一章的内容。
Static是指静态参数,它的含义是可以在其他地方被类直接调用,static的参数是确实有必要,在某个地方,在不创建实例的情况下使用的。 甚至也可以有一个类里面就全是静态变量,用来供各个地方调用,当然在android开发里面,有个res文件夹,就是实现这种功能。
Final是指这个参数被赋值之后,不能在被更改,对于变量而言,有了final,我们就可以称之为常量了,他不会再变化了。
Int是数据类型,不多讲。
说这个例子本身的意义是规避魔术参数而形成的。
举个例子
If(input == 5){
内容;
}
看这个代码,你能准确感知到这个if是在判断什么吗?
如果换个写法
If(input == JAVA_STUDY){
内容;
}
这样是不是清晰多了。
规避魔术参数,是指在代码里面,尽量不使用数字来进行传递,而采用数字对应含义的名字,而名字在其他地方和数字绑定。
一般写变量的时候,最主要是写变量类型,往往是类,或者数据类型,然后考虑变量的使用范围,加上public或者private即可,且根据变量使用范围,只在方法中用的,就不要写在类里。
关于方法的修饰:
方法约等于函数,方法是java的称呼,其特点是面向编程的特点,方法必须由对象或者类使用,是属于类或对象的。
方法的修饰和变量差不多,没有final,多了返回值。返回值可以是类或者数据类型,返回值只能有一个。大部分方法没有返回值,我们放上void来修饰,也有不少有返回值的,其中常见两种返回值一个是boolean类型,这是判断类方法,比如isExist,就是判断某个东西是否存在,返回true或者false。 还有一种返回就是get方法,可以get任何对象,以至于返回任何对象。
处理返回值,方法还有一个变量没有的修饰符,abstract,其含义是抽象方法,抽象方法用于抽象类和接口,接口和抽象类的目的都是被别的类所使用,继承或实现。 抽象方法也是为了被其他类所重写。
抽象方法里面应该是没有具体实现内容的,其实现内容,根据使用者的需要在方法中重新写出来。
抽象类就是为了被继承而存在,其本质也是将被多个类继承。
使用方法的时候,一定要有对象的概念,是对象(或者类)在使用这个方法。使用跨对象的方法的时候,首先方法一定不是private,其次,如果两个对象没有关系,一定要public的方法,且使用import将包添加到对象中。
这里涉及到package的概念,现在由于各类开发软件,Eclipse,android studio等均自动添加import,所以这个概念现在就无限弱化了。
另外本身import这块,就是你要用,就要import,并没有算法难度,或者逻辑思考,是纯粹的代码格式,所以也不深究了。
在继承中,方法是能够,也期待被重写的,在继承中,同样的名字,同样的传入参数,对于子类,他的方法就是不一样的了。如果方法是完全改写,那就改写,但是实际上,正如继承的含义,这方法往往是扩写,是在父类方法干的事情上,多干一点。这种时候,java没让我们失望,java用了super.来调用父类的方法,这样不用再把父类的方法再来一遍。
构造器:
构造器是一个类的初始化工具,是类在创建的时候,用户期望他运行的部分。如果用户没有期望运行的部分了,这个时候,就有默认构造器了。也就是说,程序员是可以不写构造器的,这个时候就是默认构造器。默认构造器是很常用的,比如
Keyboard k1=newKeyboard();
这个Keyboard()其实就是默认构造器。构造器和方法的区别最主要是没有返回值,其次是构造器名字和类是一样的。
如果自己写构造器,那么就可以自己选择参数了。
Keyboard k1=newKeyboard( CPU );
比如这种,自己写的构造器,对于键盘需要传入外界的CPU才能正常运行。
同时,构造器也可以有多个,对于不同的传入使用不同的构造器,这种情况一般也是两类,常见是构造器参数呈现递增。
比如
PublicKeyboard(){
This(defaultCPU)
}
PublicKeyboard(CPU c1){
SetCPU(c1);
}
在有需求时传入特定CPU,如果没需求,则使用默认CPU,这是多个构造器的最常见手段。
实际在写的时候,正常情况是,先写PublicKeyboard(CPU c1),再将前面的补充进去。