在Java学习中,第一只拦路虎就是类,总是学了又忘。真是蛋疼菊紧。写一篇日志专门捋一下这里面的乱七八糟。
首先,就是类这个概念,类在一本书立的解释很搞笑,叫“对象的模板”哈哈,当时就觉得这个比喻有够经典~对它的定义语法乱七八糟的就不细说了,书本上都有。
下面撸一串代码来对这串代码进行分析,代码如下
package Lei;
public(修饰符) class shuibei(类名,通常首字母为大写字母){
String col;
int vol; //定义类属性,也叫域变量,反映了类的对象的特征描述
public void setCOL(String col1){
col=col1;
}
public void setVOL(int vol1){
vol=vol1;
}
public String getCOL(){
return col;
}
public int getVOL(){
return vol;
}
public String toString(){
return"杯盖颜色"+col+"容量为"+vol;
} //set,get都是类的<strong>方法</strong>,表现为对类对象实施某个操作,往往获取或更 改类对象的属性值
public static void main(String[] args) {
shuibei b1=new shuibei(); //创建类的对象,并将创建的对象赋予某个引用变量,这里的<strong>引用变量</strong> 为b1,b2
shuibei b2=new shuibei();
b1.setCOL("是蓝色的,");
b1.setVOL(500);
b2.setCOL("是红色的,");
b2.setVOL(1000);
System.out.println("水杯1的颜色"+b1.getCOL()+"容积"+b1.getVOL()+"ML");
System.out.println("水杯2的颜色"+b2.getCOL()+"容积"+b2.getVOL()+"ML");
}
}
习惯上类的定义形式
package xxx;
import xxx;
public class Xxxx{
//属性...
//构造器...
//方法...
}
1、一个乱入:在手机某APP上定义属性为:实例变量(应该还要包括类变量,两者的区别是类变量需要static修饰,而且类变量是存储在类空间里的,通过对象访问静态空间实质还是访问类空间内的那个变量,就是说值只有一个,会随着方法对它的改变而改变,为所有对象所共享。而实例变量的值取决于对象,它存储在对象空间里,为各个对象的私有)。而实例变量在《java语言程序设计》68页中,写着,对象也成为类的实例,相应地,对象的属性也叫实例变量,而对象的方法也叫实例方法。
关于这里的实例变量,也就是属性,定义在类中但在任何方法之外,其初值可以由系统自动设定为0。
作用域至少在本类内部,受访问控制符的限制。
在与局部变量冲突时,注意局部优先。
2、构造器,在另外本书中叫做构造方法,它是类中的一种特殊构造方法
创建对象的过程中调用的方法,它的名字必须与类名相同,而且没有返回类型,主要是对不同的对象的初始化。
3、方法
在上面的例子中定义了set和get方法。在main中调用类来构建对象,(就像用不同纸张来照着模板来生成各自的文章),对象b1和b2(b1和b2只是引用变量,作用是方便访问对象)在创建时,就分配了各自属性的存储内容空间,并进行初始化。
这里要分清属性成员的初始值为0,和引用类型的成员变量的默认值为null。
public class Point{
private int x=10;
...
}
每个Point对象的属性x的初值均按上述赋值设定为10;
public class Point{
private int x;
...
{
x=20;
}
首先按属性定义的初始设置给属性赋值即x=0,再执行初始化代码重新赋值x=20。tips:构造方法是给对象设置初值的标准方式,区别在于,构造方法是根据方法参数给对象属性赋不同的初值,前面的方式是给所有对象的某属性设置同样的初值。(tip:例子Point p4=new Point(20,30);Point p3=new Point(10,20)就可以用构造方法来实现不同的赋值方式,不然只能赋予相同的值)
对对象的赋值后的空间变化
例子中,p1这个引用变量对应着空间里,存储了一个字符串信息和int信息,如果都不赋值的话,int对应的空间是0字符串对应的空间是什么?