给对象赋值的方式
1. 对于public修饰的属性使用对象直接调用
p.number = "A";
2. 对于private修饰的属性不能直接调用 只能间接使用
1. setter/getter方法
建议将 setter/getter方法定义在类的最后面避免干扰阅读
给外部提供一个set方法 通过这个方法间接给number赋值
public void setNumber(String num){
number = num;
}
给外部提供一个get方法 访问某个变量的值
public String getNumber(){
return "jack";
}
2. 构造方法/initWith
什么时候使用?
a.希望在对象创建时做点事情
b.在对象创建时 需要给属性赋值
创建一个类的一个对象的时候 就会被调用的方法
每个类会默认提供一个构造方法
-
public Poker(){}
不写void
构造方法的重载 自定义一个有参数的构造方法
方法重载 同一个类里面有多个同名的方法 但是返回值或者参数不同 -
public Poker(String num,String col){}
调用构造方法的时候 这个对象在内存里面已经分配好了
通常给一个属性赋值 形参名尽量和属性名一致
变量在使用的时候有就近原则
成员变量的作用域 从对象创建到对象被销毁
THIS
某一个方法里面调用this指的是
- 在构造方法指创造的这个对象
- 在其他地方指调用这个方法的对象
什么时候需要用this
需要明确指定调用的是这个对象自己的一些属性和方法
static
修饰的属性和方法都会在对象创建之前优先加载
属性 静态属性
方法 静态方法
方法分为 实例方法/对象方法 必须创建某一个对象 才能调用的方法
类方法/静态方法 不需要创建对象 直接用这个类来调用
public void test(){
System.out.printfln("这是对象方法");
}
public static void test(){
System.out.printfln("这是对象方法");
}
class Te1{
public static void main(String[] args){
//实例方法/对象方法
MyClass c1 = new MyClass();
c1.test;
//类方法/静态方法
MyClass.test2();
}
}
什么情况需要些静态方法
- 工厂设计模式Factory
- 当不需要记录数据 只关心功能
- 静态方法里面不能调用这个类的非静态属性和非静态方法
什么情况需要静态属性?
1.定义一个常量
2.单例设计模式
体会
本来有点迷迷糊糊的 在写纸牌游戏的时候有种顿悟的感觉,可能这就是只可意会不可言传(?)