您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第5章:面向对象基础】_static关键字
发布时间:2020-12-12 11:43:45编辑:雪饮阅读()
static关键字修饰的属性是属于类的而不是某个对象的,当static修饰的属性值被改变,则该类的所有实例化对象的该属性都会被修改。
class Person{ // 定义Person类
String name;
int age;
static String country="A城";
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void info(){
System.out.println("姓名"+this.name+",年龄:"+this.age+",城市:"+this.country);
}
};
public class TestJava{
public static void main(String args[]){
Person p1=new Person("张三",30);
Person p2=new Person("李四",31);
Person p3=new Person("王五",32);
System.out.println("----------修改之前-------");
p1.info();
p2.info();
p3.info();
p1.country="B城";
System.out.println("----------修改之后-------");
p1.info();
p2.info();
p3.info();
}
}
D:\>javac TestJava.java
D:\>java TestJava
----------修改之前-------
姓名张三,年龄:30,城市:A城
姓名李四,年龄:31,城市:A城
姓名王五,年龄:32,城市:A城
----------修改之后-------
姓名张三,年龄:30,城市:B城
姓名李四,年龄:31,城市:B城
姓名王五,年龄:32,城市:B城
D:\>
static修饰的属性可以用类名直接操作
class Person{
String name;
int age;
static String country="A城";
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void info(){
System.out.println("姓名"+this.name+",年龄:"+this.age+",城市:"+this.country);
}
};
public class TestJava{
public static void main(String args[]){
Person p1=new Person("张三",30);
Person p2=new Person("李四",31);
Person p3=new Person("王五",32);
System.out.println("----------修改之前-------");
p1.info();
p2.info();
p3.info();
Person.country="B城";
System.out.println("----------修改之后-------");
p1.info();
p2.info();
p3.info();
}
}
D:\>javac TestJava.java
D:\>java TestJava
----------修改之前-------
姓名张三,年龄:30,城市:A城
姓名李四,年龄:31,城市:A城
姓名王五,年龄:32,城市:A城
----------修改之后-------
姓名张三,年龄:30,城市:B城
姓名李四,年龄:31,城市:B城
姓名王五,年龄:32,城市:B城
static修饰的方法也可以用类名直接操作
class Person{
String name;
int age;
private static String country="A城";
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void info(){
System.out.println("姓名"+this.name+",年龄:"+this.age+",城市:"+this.country);
}
public static void setCountry(String c){
country=c;
}
};
public class TestJava{
public static void main(String args[]){
Person p1=new Person("张三",30);
Person p2=new Person("李四",31);
Person p3=new Person("王五",32);
System.out.println("----------修改之前-------");
p1.info();
p2.info();
p3.info();
Person.setCountry("B城");
System.out.println("----------修改之后-------");
p1.info();
p2.info();
p3.info();
}
}
D:\>javac TestJava.java
D:\>java TestJava
----------修改之前-------
姓名张三,年龄:30,城市:A城
姓名李四,年龄:31,城市:A城
姓名王五,年龄:32,城市:A城
----------修改之后-------
姓名张三,年龄:30,城市:B城
姓名李四,年龄:31,城市:B城
姓名王五,年龄:32,城市:B城
static修饰的方法体中不能调用非static修饰的属性或非static修饰的方法
class Person{
String name;
int age;
private static String country="A城";
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void info(){
System.out.println("姓名"+this.name+",年龄:"+this.age+",城市:"+this.country);
}
public static void sFun(){
System.out.println("name="+name);
fun();
}
public void fun(){
System.out.println("world");
}
};
public class TestJava{
public static void main(String args[]){
Person p1=new Person("张三",30);
Person p2=new Person("李四",31);
Person p3=new Person("王五",32);
System.out.println("----------修改之前-------");
p1.info();
p2.info();
p3.info();
Person.sFun();
System.out.println("----------修改之后-------");
p1.info();
p2.info();
p3.info();
}
}
D:\>javac TestJava.java
TestJava.java:13: 无法从静态上下文中引用非静态 变量 name
System.out.println("name="+name);
^
TestJava.java:14: 无法从静态上下文中引用非静态 方法 fun()
fun();
^
2 错误
static关键字的简单应用-统计一个类被实例化的次数
class Demo{
private static int count=0;
public Demo(){
count++;
System.out.println("产生了"+count+"个对象");
}
};
public class TestJava{
public static void main(String args[]){
new Demo();
new Demo();
new Demo();
}
}
D:\>javac TestJava.java
D:\>java TestJava
产生了1个对象
产生了2个对象
产生了3个对象
static关键字简单应用-为每个实例化对象自动编号
class Demo{
private String name;
private static int count=0;
public Demo(){
count++;
this.name="DEMO-"+count;
}
public String getName(){
return this.name;
}
};
public class TestJava{
public static void main(String args[]){
System.out.println(new Demo().getName());
System.out.println(new Demo().getName());
System.out.println(new Demo().getName());
}
}
关键字词:java,static