修饰成员变量
/**
* @author 爱丽丝、如歌
* @description 动物类_猫
* @create 2018-01-21 下午 6:29
**/
public class Cat {
private String id;
static String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Cat{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
public class Main {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
cat1.setId("1");
cat2.setId("2");
cat2.setName("李四");
cat1.setName("张三");
System.out.println(cat2);
System.out.println(cat1);
}
}
D:\download\tool\jdk\jdk8_64\install\bin\java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53070,suspend=y,server=n -javaagent:C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\173.4301.14\lib\rt\debugger-agent.jar=C:\Users\Administrator\AppData\Local\Temp\capture199.props -Dfile.encoding=UTF-8 -classpath D:\download\tool\jdk\jdk8_64\install\jre\lib\charsets.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\deploy.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\access-bridge.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\cldrdata.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\dnsns.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\jaccess.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\jfxrt.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\localedata.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\nashorn.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\sunec.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\sunjce_provider.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\sunmscapi.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\sunpkcs11.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\ext\zipfs.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\javaws.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\jce.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\jfr.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\jfxswt.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\jsse.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\management-agent.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\plugin.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\resources.jar;D:\download\tool\jdk\jdk8_64\install\jre\lib\rt.jar;D:\pro_idea\demo\面向对象\out\production\面向对象;C:\Users\Administrator\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\173.4301.14\lib\idea_rt.jar Main
Connected to the target VM, address: '127.0.0.1:53070', transport: 'socket'
Cat{id='2', name='张三'}
Cat{id='1', name='张三'}
Disconnected from the target VM, address: '127.0.0.1:53070', transport: 'socket'
Process finished with exit code 0
给name属性加了static关键字之后,Cat对象就不再拥有name属性了,name属性会统一交给Cat类去管理,即多个Cat对象只会对应一个name属性,一个对象如果对name属性做了改变,其他的对象都会受到影响。我们看到此时的name和toString()方法一样,都是交由类去管理。虽然我们看到static可以让对象共享属性,但是实际中我们很少这么用,也不推荐这么使用。因为这样会让该属性变得难以控制,因为它在任何地方都有可能被改变。