https://www.runoob.com/java/java-polymorphism.html
abstract class Base {
abstract void run();
void execute() {
System.out.println("base execute ---");
};
}
class Drived extends Base{
void run() {
System.out.println(" Drived run ---");
}
void execute() {
System.out.println(" Drived execute ---");
};
}
public class DrivedTest {
public static void show (Base ba) {
ba.run();
ba.execute();
Drived dr = (Drived)ba; // 向下转型
dr.run();
dr.execute();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
show(new Drived()); // Base ba = new Drived(); // 向上转型
}
}
多线程同步问题 继承Runnable类的run方法 创建多个thread 把Runnable对象传给构造函数,执行Runnable对象的run方法。实现多个线程共享数据。 可以创建多个thread类的子类对象 构造函数传空,看run方法是否共享数据。另外可以创建一个,多次调start,也不能共享数据。
public class ThreadDemo {
public static void main(String []args) {
ThreadTest tt = new ThreadTest();
// tt.start();
// new ThreadTest().start();
// new ThreadTest().start();
// tt.start();
// tt.start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
new Thread(tt).start();
int index = 1;
// while(true) {
// if(index ++ == 100)
// {
// try {
// tt.join(5000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// }
// System.out.println(Thread.currentThread().getName() + " index: " + index);
//
// }
}
}
class ThreadTest implements Runnable /*extends Thread */ {
int tickets = 100;
String str = new String();
public void run() {
// 放在这里监视器不是同一个 同步锁失败 String str = new String();
synchronized(str) {
while(tickets > 0) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("run() " + Thread.currentThread().getName() + " tickets: " + tickets--);
}
}
}
}