静态的只能访问静态的(变量、方法);非静态的既可以访问静态的也可以访问非静态的
package cn.bdqn.demo01;
public class StaticMethod {
// 定义属性
public String name;
public static int age;
// 定义方法
public static void test() {
//在静态方法中不能使用this和super关键字,因为static是属于类的,不是属于某一个对象
// this.name = "张三";
//this.age = 20;
System.out.println("我是静态方法test()");
}
public static void demo() {
// 在静态方法中可以直接调用本类中其它的静态方法
test();
// 在静态方法中不能直接调用本类中其它的非静态方法
// ttt();
// 在静态方法中不能直接访问本类中其它的非静态变量
// System.out.println(name);
// 在静态方法中可以直接访问本类中其它的静态变量
System.out.println(age);
System.out.println("我是静态方法demo()");
}
public void ceShi() {
// 在非静态方法中可以直接调用本类中其它的非静态方法
ttt();
// 在非静态方法中可以直接调用本类中其它的静态方法
test();
// 在非静态方法中可以直接访问本类中其它的非静态变量
System.out.println(name);
// 在非静态方法中可以直接访问本类中其它的静态变量
System.out.println(age);
System.out.println("我是非静态方法ceShi()");
}
public void ttt() {
System.out.println("我是非静态方法ttt()");
}
/*
* 综上所述: 静态的只能访问静态的(变量、方法);非静态的既可以访问静态的也可以访问非静态的
*/
}
静态方法:可直接通过类名访问
静态方法中不能使用this和super
不能直接访问所属类的实例变量和实例方法
可直接访问类的静态变量和静态方法
实例方法:通过实例访问
可直接访问所属类的静态变量、静态方法、实例变量和实例方法
静态方法必须被实现
模拟实现选民投票过程:一群选民进行投票,每个选民只允许投一次票,并且当投票总数达到100时,就停止投票
package cn.bdqn.demo02;
public class Voter {
//定义属性
//选民姓名
private String name;
//统计选民投票的数量
private static int count;
//声明一个常量用来表示投票的总数,100票,固定不变的
private static final int MAX_COUNT =100;
//添加构造方法用来创建对象的
public Voter(String name) {
this.name = name;
}
//定义方法模拟投票
public void vote(){
if(count==MAX_COUNT){
System.out.println("投票已经满100票,投票结束了");
return;
}else{
count++;
System.out.println("感谢"+this.name+"投递的第"+count+"票");
}
}
//打印投票情况
public static void printVoteInfo(){
System.out.println("已经投递了"+count+"张票");
}
}
package cn.bdqn.demo02;
public class VoterTest {
public static void main(String[] args) {
// 创建选民类对象
Voter voter1 = new Voter("张三");
Voter voter2 = new Voter("李四");
Voter voter3 = new Voter("王五");
Voter.printVoteInfo();
voter1.vote();
voter2.vote();
voter3.vote();
//循环创建97个Voter类对象,对象的名字叫v1 v2 v3 v4.....
for(int i =1;i<=97;i++){
Voter v = new Voter("v"+i);
v.vote();
}
//创建Voter对象
Voter test = new Voter("赵六");
test.vote();
Voter.printVoteInfo();
}
}