Java面向对象详解(中)

🐒个人主页

🏅JavaSE系列专栏

关键字this

【🪂大家都知道方法的形参,只能在方法内部操作,并且出了方法体数据就销毁了。而我不想销毁数据,所以只能定义到外面-成员变量。若方法的形参与成员变量名字不同,会导致产生很多很多变量(假设做项目)有点乱。

int name;//成员变量
int age;//成员变量
  public void show(int name,int age){
        this.name=name;
        this.age=age;
    }

🪅由于方法的形参与成员变量名字相同,会引发歧义,方法体遵循就近原则,优先调用局部的。为此我们使用this.可以表示当前对象下的属性和方法,常常用来区分同名的成员变量和局部变量。】

关键字static

概念:static被称为静态,可以用来修饰类的属性,方法,代码块,内部类。
特点
• 随着类的加载而加载
• 优先于对象存在
• 修饰的成员,被所有对象所共享(只剩一份)
• 可不创建对象,直接被类调用,(也支持对象调用)
【注意】在static方法内部只能访问类的static属性,不能访问类的非static属性,static属性先加载。
【注意】static可以修饰成员方法的,修饰后的成员方法只能访问静态的成员变量。因为静态方法也是随着类的加载而加载,类加载后,可能还没有创建对象。

●模拟卖票
public class TicketSeller {
   private static int ticket = 11;/ /
        票数只有一份 声明为静态的

public static void sellticket() {
      ticket = ticket - 1;
      System.out.println("卖票的静态方法");
        }
    }
public class Test {
  public static void main(String[] args) {
      TicketSeller.sellticket();/ /没有创建对象也可以访问静态方法
        }
    }

代码块

概念:代码块在类中声明,类似一个没有名称的方法体(代码块),代码分实例块和静态块

🎇实例块:每次创建对象时自动调用
{
	//任何符合语法的Java代码
}
🎇静态块:类加载时自动调用,仅一次,与是否创建对象无关。
static {
	//任何符合语法的Java代码
}

知识延伸设计模式

概念: 前人总结出来的解决某类问题的最优方案–模板
单例模式:设计模式的一种,需求在某个类在整个应用程序中只能打开一个窗口(只能创建一个对象)。
🪀构造途径:将构造方法私有化,在程序的其他地方不能随意调用构造方法(封装思想

🎀懒汉单例:
public class Test {
    static  Test 唯一对象;
    private Test(){//不能从外界直接创建对象
        
    }
    public static Test getTest(){
        if(唯一对象==null){
            唯一对象=new Test();
        }
        return 唯一对象;//调用的始终为这个对象
    }
    
}
🎀饿汉单例:(急切式单例)
public class Test {
    static  Test 唯一对象=new Test();
    private Test(){//不能从外界直接创建对象

    }
    public static Test getTest(){
        return 唯一对象;//调用的始终为这个对象
    }

}

【注意】:懒汉单例与饿汉单例相比较,懒汉单例是不安全的。在多线程的情况下,倘若 唯一对象=null ;两个线程同时进入if()判断创建对象,会导致线程休眠

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信计2102罗铠威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值