一、学习目的
对象是整个面向对象程序设计的理论基础,由于面向对象程序中使用类来创建对象,所以可以将对象理解为一种新型的变量,它保存着一些比较有用的数据,但可以要求它对自身进行操作。对象之间靠互相传递消息而相互作用。消息传递的结果是启动了方法,完成一-些行为或者修改接收消息的对象的属性。学会如何使用对象对面向对象编程思想的培养有很大帮助
二、学习内容
1,对象创建后就可以访问对象成员访问方法是 对象名.对象成员;
2,给对象赋值的方法:
-
1,对于public修饰的属性,使用对象直接调用 并赋值
-
2,对于private修饰的属性,不能直接调用 只能间接使用
——set/get方法//给外部提供一个set方法,通过这个方法间接给number赋值 //可以对外部给的值进行筛选 public void setNumber(String number){ this.number = number; } public String getNumber(){ //给外部提供一个get方法 访问这个变量的值 return number; }
注意:建议将get/set方法定义在类的最后面,避免干扰阅读
——构造方法 :创建一个类的对象的时候就会被调用的方法 (初始化方法)
class Poker{
private String number;
private String color;
//类的构造方法
public Poker(){
System.out.println("构造方法");
number = "2";
color = "♠";
}
在创建Poker类的对象时,会直接给number,color赋值
3,方法的重载:方法的重载实现“多态”的一种方法;同一个类里面有多个同名方法 但是差数或返回值不同
public int nextInt();
public int nextInt(int i);
二者虽然函数名一致,但参数类型不一样,因此同名的函数却有不同的功能
注意:Java语言不允许参数个数或参数类型完全相同,而只有返回值不同的重载。
4,构造方法的重载
1,想在对像创建的时候,做点其他事情
2,在创建数据的时候需要给自变量赋值
public Poker(String num,String color){
//调用构造方法的时候 这个对象在内存里面已经分配好了
//这里面的this指的是 创建的这个对象
this.number = number;
this.color = color;
System.out.println("自定义的构造方法");
}
注意:this关键字必须写在构造方法内第一行的位置
某个方法里面的this指的是调用这个方法的对象
public void setColor(String color) {
//某个方法里面的this指的是调用这个方法的对象
this.color = color;
}
5,静态变量
静态变量也成为类变量,隶属于类而不属于哪个变量。静态变量在某种程度上类似于全局变量。静态变量用static修饰
什么情况下要用到静态变量
1,定义一个常量
2,单列设计模式
6,静态方法与静态变量相似,用static修饰符修饰的方法是属于类的静态方法,又称为类方法。静态方法实质是属于整个类的方法,而不加static修饰符的方法:是属于某个具体对象的方法
什么情况下需要些静态方法?
1,工厂设计模式Factory
2, 当不需要记录一些数据 只关心功能就可以使用静态方法
3,注意:静态方法里面不能调用这个类里面的非静态属性和非静态方法
public static void test1(){
System.out.println("这是个静态方法");
}
7,实例方法和对象方法的比较
实例方法/对象方法:实例方法是属于某个对象的方法,在这个对象创建时,对象的方法在内存中拥有属于自己专用的代码段。必须创建对象才能使用
类方法:static的方法是属于整个类的,它在内存中的代码段将被所有的对象所共用,而不被任何一个对象所专用。不需创建对象,直接用类调用
class Test1{
public void test(){
System.out.println("这是个对象方法");
}
public static void test1(){
System.out.println("这是个静态方法");
}
}
class Test2 {
public static void main(String[] args) {
Test1 t1 = new Test1();
t1.test(); //调用对象方法
Test1.test1();//调用类方法
}
注意:static方法只能访问static成员变量或调用static 成员方法。或说在静态方法中不能访问实例变量与实例方法。因为static变量和方法都是在对象创建之前优先加载。
三、学习感悟
Java的所有编程思想都是面向对象,所以一定要理清楚对象这个概念,才能学习更深入的开发。脑海里没有这个思想是很难学好Java的,我感觉我自己对面向对象的理解并不是很深刻,可能是代码敲的还不够多。一种思想的培养并不是那么容易,只能靠不断地积累,不断地去实践,孰能生巧联系的多了自然就体会深刻了。