class Animal{
public voidbreathe(String animal){
System.out.println(animal+"呼吸空气");}}
public class Client{
public staticvoidmain(String[] args){
Animal animal = new Animal();
animal.breathe("牛");
animal.breathe("羊");
animal.breathe("猪");}}
class Terrestrial{
public voidbreathe(String animal){
System.out.println(animal+"呼吸空气");}}
class Aquatic{
public voidbreathe(String animal){
System.out.println(animal+"呼吸水");}}
public class Client{
public staticvoidmain(String[] args){
Terrestrial terrestrial = new Terrestrial();
terrestrial.breathe(“牛”);
terrestrial.breathe(“羊”);
terrestrial.breathe(“猪”);
Aquatic aquatic = new Aquatic();
aquatic.breathe("鱼");}}
class Animal{
public voidbreathe(String animal){if("鱼".equals(animal)){
System.out.println(animal+"呼吸水");}else{
System.out.println(animal+"呼吸空气");}}}
public class Client{
public staticvoidmain(String[] args){
Animal animal = new Animal();
animal.breathe(“牛”);
animal.breathe(“羊”);
animal.breathe(“猪”);
animal.breathe(“鱼”);}}
class Animal{
public voidbreathe(String animal){
System.out.println(animal+"呼吸空气");}
public voidbreathe2(String animal){ System.out.println(animal+"呼吸水");}}
public class Client{
public staticvoidmain(String[] args){
Animal animal = new Animal();
animal.breathe(“牛”);
animal.breathe(“羊”);
animal.breathe(“猪”);
animal.breathe2(“鱼”);}}
class A{
public intfunc1(int a,int b){return a-b;}}
public class Client{
public staticvoidmain(String[] args){
A a = new A();
System.out.println(“100-50=”+a.func1(100,50));
System.out.println(“100-80=”+a.func1(100,80));}}
class B extends A{
public intfunc1(int a,int b){return a+b;}
public intfunc2(int a,int b){returnfunc1(a,b)+100;}}
public class Client{
public staticvoidmain(String[] args){
B b = new B();
System.out.println(“100-50=”+b.func1(100,50));
System.out.println(“100-80=”+b.func1(100,80));
System.out.println(“100+20+100=”+b.func2(100,20));}}
class Book{
public String getContent(){return"很久很久以前有一个阿拉伯的故事……";}}
class Mother{
public voidnarrate(Book book){
System.out.println(“妈妈开始讲故事”);
System.out.println(book.getContent());}}
public class Client{
public staticvoidmain(String[] args){
Mother mother = new Mother();
mother.narrate(new Book());}}
class Newspaper implements IReader {
public String getContent(){return"林书豪17+9助尼克斯击败老鹰……";}}
class Book implements IReader{
public String getContent(){return"很久很久以前有一个阿拉伯的故事……";}}
class Mother{
public voidnarrate(IReader reader){
System.out.println(“妈妈开始讲故事”);
System.out.println(reader.getContent());}}
public class Client{
public staticvoidmain(String[] args){
Mother mother = new Mother();
mother.narrate(new Book());
mother.narrate(new Newspaper());}}
interface I {
public voidmethod1();
public voidmethod2();
public voidmethod3();
public voidmethod4();
public voidmethod5();}
class A{
public voiddepend1(I i){
i.method1();}
public voiddepend2(I i){
i.method2();}
public voiddepend3(I i){
i.method3();}}
class B implements I{
public voidmethod1(){
System.out.println(“类B实现接口I的方法1”);}
public voidmethod2(){
System.out.println(“类B实现接口I的方法2”);}
public voidmethod3(){
System.out.println(“类B实现接口I的方法3”);}//对于类B来说,method4和method5不是必需的,但是由于接口A中有这两个方法,//所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。
public voidmethod4(){}
public voidmethod5(){}}
class C{
public voiddepend1(I i){
i.method1();}
public voiddepend2(I i){
i.method4();}
public voiddepend3(I i){
i.method5();}}
class D implements I{
public voidmethod1(){
System.out.println(“类D实现接口I的方法1”);}//对于类D来说,method2和method3不是必需的,但是由于接口A中有这两个方法,//所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。
public voidmethod2(){}
public voidmethod3(){}
public voidmethod4(){
System.out.println("类D实现接口I的方法4");}
public voidmethod5(){
System.out.println("类D实现接口I的方法5");}}
public class Client{
public staticvoidmain(String[] args){
A a = new A();
a.depend1(new B());
a.depend2(new B());
a.depend3(new B());
C c = new C();
c.depend1(new D());
c.depend2(new D());
c.depend3(new D());}}
interface I1 {
public voidmethod1();}
interface I2 {
public voidmethod2();
public voidmethod3();}
interface I3 {
public voidmethod4();
public voidmethod5();}
class A{
public voiddepend1(I1 i){
i.method1();}
public voiddepend2(I2 i){
i.method2();}
public voiddepend3(I2 i){
i.method3();}}
class B implements I1, I2{
public voidmethod1(){
System.out.println(“类B实现接口I1的方法1”);}
public voidmethod2(){
System.out.println(“类B实现接口I2的方法2”);}
public voidmethod3(){
System.out.println(“类B实现接口I2的方法3”);}}
class C{
public voiddepend1(I1 i){
i.method1();}
public voiddepend2(I3 i){
i.method4();}
public voiddepend3(I3 i){
i.method5();}}
class D implements I1, I3{
public voidmethod1(){
System.out.println(“类D实现接口I1的方法1”);}
public voidmethod4(){
System.out.println(“类D实现接口I3的方法4”);}
public voidmethod5(){
System.out.println(“类D实现接口I3的方法5”);}}
//总公司员工
class Employee{
private String id;
public voidsetId(String id){
this.id = id;}
public String getId(){return id;}}//分公司员工
class SubEmployee{
private String id;
public voidsetId(String id){
this.id = id;}
public String getId(){return id;}}
class SubCompanyManager{
public List<SubEmployee>getAllEmployee(){
List<SubEmployee> list = new ArrayList<SubEmployee>();for(int i=0; i<100; i++){
SubEmployee emp = new SubEmployee();//为分公司人员按顺序分配一个ID
emp.setId(“分公司”+i);
list.add(emp);}return list;}}
class CompanyManager{
public List<Employee>getAllEmployee(){
List<Employee> list = new ArrayList<Employee>();for(int i=0; i<30; i++){
Employee emp = new Employee();//为总公司人员按顺序分配一个ID
emp.setId("总公司"+i);
list.add(emp);}return list;}
public voidprintAllEmployee(SubCompanyManager sub){
List<SubEmployee> list1 = sub.getAllEmployee();for(SubEmployee e:list1){
System.out.println(e.getId());}
List<Employee> list2 = this.getAllEmployee();for(Employee e:list2){
System.out.println(e.getId());}}}
public class Client{
public staticvoidmain(String[] args){
CompanyManager e = new CompanyManager();
e.printAllEmployee(new SubCompanyManager());}}
class SubCompanyManager{
public List<SubEmployee>getAllEmployee(){
List<SubEmployee> list = new ArrayList<SubEmployee>();for(int i=0; i<100; i++){
SubEmployee emp = new SubEmployee();//为分公司人员按顺序分配一个ID
emp.setId("分公司"+i);
list.add(emp);}return list;}
public voidprintEmployee(){
List<SubEmployee> list = this.getAllEmployee();for(SubEmployee e:list){
System.out.println(e.getId());}}}
class CompanyManager{
public List<Employee>getAllEmployee(){
List<Employee> list = new ArrayList<Employee>();for(int i=0; i<30; i++){
Employee emp = new Employee();//为总公司人员按顺序分配一个ID
emp.setId(“总公司”+i);
list.add(emp);}return list;}
public voidprintAllEmployee(SubCompanyManager sub){
sub.printEmployee();
List<Employee> list2 = this.getAllEmployee();for(Employee e:list2){
System.out.println(e.getId());}}}