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


心得体会

  • 似乎自己真的不够努力,因为不够努力,所以上课不能很好的吸收当天的知识,java对我来说真的挺难的,好像至今我还深陷于c语言的思维无法自拔。但是,实际说,我觉得java要更加有趣一点,写一个demo前进行一次逻辑分析,挺有用的,能让自己编程的思路更加清晰一点。

技术

  • 1.给对象赋值的方式
  • 2.setter/getter方法
  • 3.构造方法
  • 4.变量作用域
  • 5.this指针
  • 6.static

具体操作

1.给对象赋值的方式

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

  • b.对于private修饰的属性 不能直接调用 只能间接使用,可以用
    getter/setter方法构造方法
  • 2.setter/getter方法
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.构造方法

  • a.构造方法的定义

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

  • b.类的默认构造方法
  • 创建一个类的具体对象
    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”,“ 黑桃”打印出来

  • c.构造方法的重载
    1.方法重载

同一个类里面有多个同名的方法 但是返回值或者参数不同
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
  • 通常给一个属性赋值 形参名尽量和属性名一致
    变量在使用的时候有就近原则构造方法的时候 这个对象在内存里面已经分配好了
  • d.什么时候使用构造方法**

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

4.变量作用域

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

此时没有赋值成功!!!

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

这是正确的

5.this指针

  • 什么时候用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.注意:静态方法里面不能调用静态这个类里面的属性和非
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343