java基础学习

抽象类不能new对象的,只能被子类继承。如果抽象类中方法是抽象方法,那么子类必须实例化此方法,否则不需要去此方法!抽象类没有构造方法,也不能实例化.

静态变量,因为初始化的时候会在内存中开辟一块地方存储,所以不论对他进行什么操作,都是对同一个内存进行操作,也就是说对这个静态变量操作的结果是会累加的。

比如 下面的程序:

public class Ruckus {
	public static void main(String[] args) {
		// new dog的时候会实例化Counter类的count变量,count=1,static变量只初始化一次,所以再就new
		// dog()的话就不会再初始化count变量了.
		Dog dogs[] = { new Dog(), new Dog() };
		for (int i = 0; i < dogs.length; i++) {
			// 这里对count变量进行++,是的count=2;因为count是static的,所以对他的操作会累加,否则将不会累加,只是初始化。
			dogs[i].woof();
			int num = Dog.getCount();
			// 也就是说如果count不是静态的,那么这里的num每次都会是0
			System.out.println(num);
		}
		Cat cats[] = { new Cat(), new Cat(), new Cat() };
		for (int i = 0; i < cats.length; i++)
			cats[i].meow();

		System.out.print(Dog.getCount() + " woofs and ");
		System.out.println(Cat.getCount() + " meows");
	}
}

class Counter {
	private static int count = 0;

	public static final synchronized void increment() {
		count++;
	}

	public static final synchronized int getCount() {
		return count;
	}
}

class Dog extends Counter {
	public Dog() {
	}

	public void woof() {
		increment();
	}
}

class Cat extends Counter {
	public Cat() {
	}

	public void meow() {
		increment();
	}
}

每次new一个Dog对象,或者是Cat对象,并不会对count的值产生影响,但是
woof()
这个方法调用一次就会给count加1,那么因为这样的操作对static变量来说是累加的,所以count会一只加到5才算结束。

结果可想而知:5 woofs and 5 meows

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值