观察几个类的设计之后,对面向对象编程思路有了更进一步的理解。
虽然类由成员变量和方法组成,且成员变量可以理解为对象的属性、方法可以理解为操纵属性的功能组合。但实际编程中不必太拘泥于此设计,类的设计可以理解为:变量+方法
变量分为:类共享的静态变量、对象独有的成员变量
变量都是为方法服务,如果某一方法需要一个变量实现功能,那么变量就可以直接写在类变量的位置,对象创建了成员变量就创建了。
虽然是类中,但完全可以类比成正常面向过程编程的顺序,抛开类的概念,变量就是变量,方法就是方法,只不过面向过程的变量是全局,面向对象的变量有一定限制。
public class TestTurnPrint {public static void main(String[] args) {WaitNotify wn= new WaitNotify(1,5);//多个线程共享这一份对象new Thread(()->{try {wn.print("a",1,2);} catch (InterruptedException e) {e.printStackTrace();}}).start();new Thread(()->{try {wn.print("b",2,3);} catch (InterruptedException e) {e.printStackTrace();}}).start();new Thread(()->{try {wn.print("c",3,1);} catch (InterruptedException e) {e.printStackTrace();}}).start();}}/*输出内容 等待标记 下一个标记a 1 2b 2 3c 3 1*/class WaitNotify{//等待标记private int flag;//循环次数private int loopNumber;//构造方法public WaitNotify(int flag,int loopNumber){this.flag=flag;this.loopNumber=loopNumber;}//核心方法-打印public void print(String str,int waitFlag,int nextFlag) throws InterruptedException {for(int i=0;i<loopNumber;i++){synchronized (this){while(flag!=waitFlag){this.wait();}System.out.println(str);flag=nextFlag;this.notifyAll();}}}}
