java静态与非静态

静态的只能访问静态的(变量、方法);非静态的既可以访问静态的也可以访问非静态的

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();
	}

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值