这几天在全力的学历类这个概念,有些东西不好表达,但是就是那样存在,也就是那个意思……比如说这几天学习的类的概念就是这样。
因为现阶段的学习并不是为了考试,所以在学习过程中理解更加重要,所以也就不会记录太多的概念性的东西,更多的是案例和总结。
然后插一句,前几天在贴吧发布的笔记时有人问习题这个东西。因为我的学习不是为了考试,所以手上并没有去网络三找太多的习题来做,更多是实例来模仿。习题可能在一部分内容学习结束了再来练习,就这样。
下面上这几天学习类的代码~
顺便插一句,前几天看韩顺平老师的教程时听到这么一说就是要在代码前写基本资料,比如时间啊作者啊什么的……于是这几次的代码就出现了这个注释。
【1】
//作者:子叶
//时间:2014年2月2日21:37:21
//功能:学习定义类的创建、成员
public class leiDeXueXi1{
public static void main(String []args){
//创建对象(一只猫)
Cat cat1= new Cat();
//给对象添加属性【访问属性的方法: 对象名.变量名 】
cat1. age=3;
cat1. name="小白" ;
cat1. color="白色" ;
//创建第二只猫
Cat cat2= new Cat();
cat2. age=100;
cat2. name="小花" ;
cat2. color="花色" ;
}
}
//在JAVA中定义一个类(猫类)[类名的首字母通常大写]
class Cat{
//定义成员变量(成员属性)
int age ;
String name;
String color;
//成员变量可以是引用类型
Master myMaster;
}
class Master{
int age ;
String name;
String address;
}
【总结】
1 初步感受类是将某些事物的一些共同特征提取出来而得到的一个集合。比如说上面的 猫 类,它将猫的共同特征(年龄,名字,花色等)提取出来从而得到了一个类。
2 类是对一个整体的集合,而并不是这个东西,在使用时还需要创建对象。例如上面的 cat1 和cat2 。
3 我们把类里面那些共同的特征用变量来存储,叫做 成员变量/成员属性 。涉及变量就会有一个变量类型的问题。教程上说,类的成员变量可以是应用类型,也就是上面的的 myMaster 。
4 根据上面myMaster来理解,那么一个类就可以理解为一个类型,一个数据类型。
5 貌似听说 String 就是一个类,所以字符串是一个引用类型【待查证】
【2】
public class leiDeXueXi2{
public static void main(String[]args){
//在声明对象的同时,创建了一个对象
//此过程也可以先声明,后创建 Person a; a=new Person();
Person a= new Person();
a. age=10;
a. name="小明" ;
//声明一个对象b,但没有创建对象(内存中没有给划内存区域)
Person b;
b=a; //此步骤是把b指向a的内存(b此时没有内存,指向a的内存与a共用,b相当于一个指针变量)//b改变a也改变
System. out.println(b.age );//输出了对象a的age属性10
Person c;
c=b;
c. age=9;
System. out.println("a的年龄" +a.age);
System. out.println("b的年龄" +b.age);
System. out.println("c的年龄" +c.age);
c= null;//表明这个对象已经没有作用了,JAVA虚拟机会在适当的时候回收该对象
}
}
//定义一个类(人类)
class Person{
int age ;
String name;
}
【总结】
这次代码主要理解了一下声明与创建的含义。经百度查找资料,大致得到一下的感悟:
1 声明的主要作用是 说明有这个东西的存在,而并没有赋予实际的内存 【相当于一个指针?】。
2 而创建对象则是给这个对象划分一块内存区域,是实打实的对象(里面存有数据),不过貌似不能直接引用,还得用刚才说的声明的对象来引用。
3 这里的声明和创建貌似和 变量的声明和变量的初始化 有类似的关系。【= =,变量的学习不过关,在这里有点蒙,之后没事了尽快去补会来吧……
4 指针是C语言里的概念,当初一直没理解就放弃了,不过这里貌似是同一个概念。
5 通过上面声明的对象c,我们不难看出,创建的对象在内存中需要一个东西(指针?)来指向他才能引用,而且可以被多个这种东西(求科普,这到底叫什么= =)引用
6 只要其中一个引用到的数据改变了,那么所有指向这个的引用数据都会改变
【3】
//作者:子叶
//时间:2014年2月2日22:22:33
//功能:学习成员方法
public class leiDeXueXi3{
public static void main(String[]args){
Person1 p1= new Person1();
//调用speak
p1.speak();
//调用计算
p1.jisuan();
//调用带参数的成员变量
p1.jisuan(100);
}
}
//定义一个类 Person1
class Person1{
int age ;
String name;
//定义一个(行为)成员方法输出一句话[方法名的首字母不一定是大写]
public void speak(){
System. out.println("我是好人" );
}
//定义一个方法,实现计算
public void jisuan(){
int result=0;
for(int i=1;i<=100;i++){
result+=i;
}
//输出结果
System. out.println(result);
}
//定义一个带参数的成员方法[可与不带参数的方法名相同]
public void jisuan(int num){ //参数列表需要标识符
int result=0;
for(int i=1;i<=num;i++){
result+=i;
}
System. out.println(result);
}
}
【总结】
1 类里面的内容不仅仅是成员变量,还会有一些的计算,叫做 成员方法。
2 成员方法感觉和C语言里的函数差不多,就是一系列的计算,可以带参数和返回值。
(C里面的函数差不多,就不多写了0 0【我好懒
【4】
//作者:子叶
//时间:2014年2月3日20:00:15
//功能:学习构造方法
public class leiDeXueXi4{
public static void main(String[]args){
Person2 p1= new Person2(15,"子叶" );
System. out.println(p1.age );
System. out.println(p1.name );
}
}
class Person2{
int age ;
String name;
//创建一个构造方法
public Person2(int age,String name){
this.age =age;
this.name =name;
}
}
【总结】
1 类这个概念里面不仅仅有成员方法实现计算,还有一种方法叫做 构造方法 ,用来在创建对象时给其传入这个类的一些值。。
2 构造方法可以不写,此时则默认为该方法为空。(如果有一个构造方法出现,那么默认的就不管用了0 0
3 构造方法可以有多个,这是创建对象时按传入值的类型或个数(这里是这个么?记不清了0 0)来区分开来的
类里面的概念还有很多,这次在这敲了好些了,这都有一个小时了0 0
于是剩下的概念以后再写吧0 0……【教程听完了,还得总结。