【java】面向对象(3) static关键字/final关键字/构造器

1.static关键字

static修饰静态部分,由static修饰代码有如下性质:
1.static在jvm分配的static空间中
2.static空间分配比较早。(初始化顺序早)
3.static修饰的方法、属性只能被定义一次。

static修饰的方法、属性不属于当前对象,一般使用类名方式访问。
eg. Car.price = 1000.0;

案例(无继承关系初始化顺序/银行余额)

Bank.java

@Data
/**
 * static特点
 * 1.static在jvm分配的static空间中
 * bank类创建对象可以公共访问
 * 2.无论创建几次对象,static属性和方法都只初始化一次 
 * 3.static初始化顺序早
 * 4.static修饰的属性一般用类名访问 如:Bank.balance
 * @author wdy
 *
 */
public class Bank {
    
    
	 private String name;
	 private static int balance =100000;//余额 static属性
	 
	 {
    
    
		 System.out.println("代码块");
	 }
     
	 static {
    
    
		 System.out.println("static代码块");//static 代码块只调用一次
	 }	  
	 
	 public Bank() {
    
    
		 System.out.println("无参数构造方法");
	 }
	 
	 public void deposit(int money) {
    
    
		 Bank.balance+=money;
		 System.out.println("我是deposit方法");
	 }
	 
	 public void withdraw(int money) {
    
    
		 Bank.balance-=money;
		 System.out.println("我是withdraw方法");
	 }
	
	 /*
	 * 余额 static方法
	 * static修饰的方法/属性,只能被定义一次
	 * 因此static方法内不能调用其它方法
	 */
     public static int getbalance(){
    
    
    	 System.out.println("我是static方法");
    	 return Bank.balance;
     }

	public Bank(String name) {
    
    
		super();
		System.out.println("有参构造方法");
		this.name = name;
	}
}

BankTest.java

public class BankTest {
    
    

	@Test
	public void test() {
    
    
		Bank abc=new Bank();
		abc.setName("中国农业银行");
		abc.withdraw(10000);
		
		Bank icbc=new Bank();
		icbc.setName("中国工商银行");
		icbc.withdraw(10000);
	    	
		Bank ab1c=new Bank("hhh");	
		System.out.println("有参构造方法结果:"+ab1c.getName());	
		System.out.println("最终余额为:"+icbc.getbalance());
	}
}

运行结果
在这里插入图片描述

2.final关键字

不可变、不可修改

在这里插入图片描述

3.构造器

构造器的作用是创建对象时对对象进行初始化。

  • 构造方法的语法结构

由访问控制符、类名、参数列组成

  • 无参数构造方法

如果开发者不定义构造器,那么编译器会主动创建无参数构造方法-默认构造方法。(参考上方案例)
书写快捷方式:类名 alt+?

  • 有参构造方法

开发者自己定义的构造器,也称为有参构造器。注意:
如果开发者自己定义构造器,那么编译器就不会创建无参构造器。(参考上方案例)
书写快捷方式 :alt+shift+s ——Generate Constructor using Field 按需勾选参数属性)

猜你喜欢

转载自blog.csdn.net/wdy00000/article/details/121869850