JAVA-(构造方法、setter/getter方法、this指

2019-08-07  本文已影响0人  宁晓鸯

心得体会


技术


具体操作

1.给对象赋值的方式

  • a.对于public修饰的属性 使用对象直接调用
    p.number='A';

  • b.对于private修饰的属性 不能直接调用 只能间接使用,可以用
    getter/setter方法构造方法
class Poker{
    private String number;
    private String color;
    
    public boolean bigerThen(String number) {//比较大小
        return true;
    }
    //什么时候用this
    //需要明确指定调用的是自己对象的方法
    public void t1(int... ages){
        bigerThen(null);
        this.bigerThen(null);
    }

上图中的number、color属性由private修饰,不能直接调用,只能间接调用

 //给外部提供一个set方法 通过这个方法间接给number赋值
 //可以对外部给的值进行控制

 public void setNumber(String num){
       number=num;
    }
 //给外部提供一个get方法 访问某个变量的值
 public String getNumber(){
        return "number";
    }
 public void setColor(String color) {
        this.color = color;
    }
 public String getColor() {
        return color;
    }
  • 上图中给外部提供一个set方法 通过这个方法间接给number,color赋
    值,可以对外部给的值进行控制,
  • 给外部提供一个get方法 访问某个变量的值
  • 通过setter/getter方法,于是poker类中的成员属性number,color可以在外部间接调用
public class Test {
    public static void main(String[] args){
       Poker p=new Poker();//创建对象
       p.setNumber("jacker");
       System.out.println(p.getNumber());
     }
}
QQ截图20190807211149.png

注意:通常setter/getter方法不需要手动添加,可以通过系统直接添加。首先把光标放在setter/getter方法要添加的位置,然后快捷键Alt+Insert。(ps:我的电脑快捷键是这样的,如果你的电脑快捷键不是这样的,可以点击code,然后看Generate,看一下快捷键是什么)

image.png
建议!!!: 建议将setter/getter方法定义在类的最后面 避免干扰阅读

3.构造方法

构造方法:创建一个类的一个对象的时候 就会被调用的方法

  • 创建一个类的具体对象
    Poker pp=new Poker();
  • 每个类会默认提供一个构造方法

1.无参数的默认构造方法

public Poker(){
    
        System.out.println("构造方法");
    }

2.有参数的默认构造方法

public Poker(){
        number='2';
        color='♠';
        System.out.println("构造方法");
    }
public class Test {
    public static void main(String[] args){
        Poker pp=new Poker();
        System.out.println(pp.getNumber());
        System.out.println(pp.getColor());
    }
}
class Poker {
    private String number;
    private String color;
    //类的默认构造方法
    public Poker(){
        number="2";
        color="黑桃";
        System.out.println("构造方法");

    }
   public boolean bigerThen(String number) {
        return true;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
} QQ截图20190807222610.png

为什么会打印上述结果:
因为Poker pp=new Poker();这里创建了一个对象,创建这个对象它默认会调用这个对象里面的默认构造方法,这个构造方法里面先赋值,然后打印的System.out.println("构造方法");这句话就会执行完毕。执行完毕,这个对象创建完毕,然后再调用
System.out.println(pp.getNumber());
System.out.println(pp.getColor());
方法,把“2”,“ 黑桃”打印出来

同一个类里面有多个同名的方法 但是返回值或者参数不同
public int nextInt()
public int nextInt(int i);
这两个方法方法名相同,但执行的内容不同,参数不同,返回值一样,这就是重载

2.自定义的构造方法

public class Test {
    public static void main(String[] args){
        Poker pp2=new Poker("k","♥");
        System.out.println(pp2.getNumber());
        System.out.println(pp2.getColor());

        Poker pp3=new Poker("Q","♣");
        System.out.println(pp3.getNumber());
        System.out.println(pp3.getColor());
    }
}
class Poker {
    private String number;
    private String color;

    //自定义的构造方法
    public Poker(String num,String col){
        //调用
        number=num;
        this.color=col;
        System.out.println("自定义的构造方法");
    }
   public boolean bigerThen(String number) {
        return true;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
QQ截图20190807230318.png
  • 通常给一个属性赋值 形参名尽量和属性名一致
    变量在使用的时候有就近原则构造方法的时候 这个对象在内存里面已经分配好了

a.希望在对象创建的时候 做点其他事情
(这个时候用默认的构造方法就可以了,用自定义的构造方法也是可以的)
b.在对象创建的时候 需要给属性赋值
(这个时候需要写一个自定义的构造方法)

4.变量作用域

  • a.成员变量的作用域,从对象创建到对象销毁
  • b.方法的变量作用域在这个方法内部,出了这个方法就无法访问
  • 变量在使用时有就近原则
 public Poker(String 
 number,String color){
        //调用
        number=number;//错误!!!

此时没有赋值成功!!!

public Poker(String 
 num,String col){
        //调用
 number=num;

这是正确的

5.this指针

需要明确指定调用的是自己对象的方法

  public void t1(int... ages) {
        bigerThen(null);
        this.bigerThen(null);
     }

在构造方法里面,这个this指的是创建的这个对象

   public Poker(String number,String color){
        //调用
       this.number=number;
       this.color=color;
        System.out.println("自定义的构造方法");
    }

除构造方法的任意一个方法里面调用this指的是 调用这个方法的对象

public void setColor(String color) {
this.color = color;
}

6.static

  • static 修饰的属性和方法都会在对象创建之前优先加载
  • 属性 静态属性
    方法 静态方法
    实例方法/对象方法:必须创建某一个对象才能调用的方法
    类方法/静态方法: 不需要创建对象 直接用这个类来调用
class MyClass{
   public void test(){
       System.out.println("这是对象方法");
   }
   public  static void test2(){
       System.out.println("这是静态方法");
   }
}
class T2{
   public static void main(String[] args){
       MyClass c1=new MyClass();//使用类的实例方法/对象方法
       c1.test();

       MyClass.test2();//使用类/静态方法
}

什么情况下需要写静态方法:

  • 1.当不需要记录数据的时候 只关心功能就可以使用静态方法
  • 2.注意:静态方法里面不能调用静态这个类里面的属性和非
上一篇下一篇

猜你喜欢

热点阅读