标签:
package com.yue.abs;
abstract class Instrument {
abstract void play(String n);
// 非抽象方法
private String what() {return "Instrument";}
abstract void adjust();
}
class Wind extends Instrument {
void play(String n) {System.out.println("Wind" + n);}
void adjust() {}
}
// 没实现完抽象父类中的方法
abstract class Percussion extends Instrument {
// 实现其中的一个
void play(String n) {
System.out.println("Percussion" + n);
}
// 没实现这个方法,虽然这个adjust和父类Instrument中的一样,但这个方法是Percussion的抽象方法
abstract void adjust();
// 这个抽象类还可以定义其他抽象的方法
abstract void next();
}
class Brass extends Wind {
}
public class Music {
public static void main(String[] args) {
// 声明一个Instrument,这样会报错
// Instrument instrument = new Instrument();
// 不过可以这样
Instrument inside = new Instrument() {
void play(String n) {
System.out.println("内部定义:" + n);
}
void adjust() {
}
};
// 调用
Instrument[] orchestra = { inside, new Wind(), new Brass() // 因为这个是个空类,没有重写父类方法,他就只能执行父类中的方法了。
};
for (Instrument i : orchestra) {
i.play("呵呵:");
}
}
}
interface Instrument{
int i = 0;//接口中的域 static&final
void play (String n);
public void adjust();
}
//接口也可以继承接口而不必实现其中的方法,但不能使用implements关键字
interface Insturment2 extends Instrument{
//但父接口(Instrument)的方法并没有被重写,虽然是一样的,这个play仅属于Insturment2
public void play(String n);
}
class Wind implements Instrument{
public void play(String n) {System.out.println("Wind" + n);}
public void adjust() {}
}
class Percussion implements Instrument{
public void play(String n) {System.out.println("Percussion" + n);}
public void adjust() {}
}
public class Music {
public static void main(String[] args) {
Instrument instrument = new Instrument() {
public void play(String n) {System.out.println("内部实现:" + n);}
public void adjust() {}
};
Instrument[] orchestra = {
new Wind(),new Percussion(),instrument
};
// Instrument.i ++;//因为是final的这样是错误的调用,因为是静态、public,可以Instrument.i
}
}
标签:
原文地址:http://www.cnblogs.com/ayue-1994-com/p/5792362.html