面向对象高级day01

81 阅读2分钟

成员方法之间可以互相访问 静态方法只能访问静态方法 成员方法能访问静态方法 和jvm类与对象的加载顺序有关系 类是先创建的 成员方法需要对象 静态方法先出

static

private 其他地方不能被访问

静态方法

所有的静态变量用 类名调用 不用对象名调用

工具类的特征

工具类的作用

  1. 与对象无关,为了方便使用,类中只有静态方法
  2. 以Util(s)结尾
  3. 构造器私有化
  • 工具类
public class FruitUtil {
    private FruitUtil(){
        
    }
    public static void weight(double weight,double price){
        System.out.println(weight*price);
    }
}
  • 测试类
public class Test {

    public static void main(String[] args) {
        FruitUtil.weight(12.3,12);
       
            }
}

javabean

  • 通过面向对象封装 设置getset方法 形成一类标准的类

静态变量

  • 内存图 image.png
  • 注意:警告 image.png
  • javabean类
public class Room {
    /**
    
![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1a2579322b66492f86c5bd471140e9ad~tplv-k3u1fbpfcp-watermark.image?)
    private String roomKey;
    private  String owner;
    //8.所以现在我们把publicKey用static修饰
    //9.public String publicKey="123345";
    public static String publicKey="123456";
    public String getPublicKey() {
        return publicKey;
    }

    public String getRoomKey() {
        return roomKey;
    }

    public void setRoomKey(String roomKey) {
        this.roomKey = roomKey;
    }

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }
}
  • 测试类
public class Test {

    public static void main(String[] args) {
        Room room1=new Room("123456","包小姐");
        Room room2=new Room("111111","李小姐");
        //10.这边的警告是为了让我们不要用对象访问static变量
        //11.我们最好用类来访问静态成员变量
        //12.room1.publicKey="111111";
        Room.publicKey="1234";
        //13.这里我们改了static修饰的变量
        //14.因为他是共享的所以打印 room2.publicKey是一样的
        //1.我在room1修改publicKey
        //2.但是我打印了room2的publicKey
        //3.没有发生改变
        //4.因为此时publicKey还没有被static修饰
        //5.所以导致他不是类共享的
        //6.我们要求他是类共享的
        //7.所以需要加上static修饰符
        //15.这里我们把room2.publicKey改成Room.publicKey
        System.out.println(Room.publicKey);
            }
}