Advertisement
Guest User

Untitled

a guest
Sep 17th, 2013
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.80 KB | None | 0 0
  1. public class Tester {
  2.    
  3.  
  4.     public static abstract class A {
  5.         abstract void work();
  6.         void huh(Tester t) {
  7.             t.make(this);
  8.         }
  9.     }
  10.     public static class B extends A {
  11.         @Override
  12.         void work() {
  13.             System.out.println("B");
  14.         }
  15.        
  16.        
  17.     }
  18.    
  19.     public static class C extends A {
  20.         @Override
  21.         void work() {
  22.             System.out.println("C");
  23.         }
  24.     }
  25.    
  26.     public static class BB extends B {
  27.         @Override
  28.         void work() {
  29.             System.out.println("BB");
  30.         }
  31.     }
  32.    
  33.    
  34.    
  35.     void make(A a) {
  36.         a.work();
  37.         System.out.println("A generic");
  38.     }
  39.    
  40.     void make(B b) {
  41.         b.work();
  42.         System.out.println("B overload");
  43.     }
  44.    
  45.     void make(BB b) {
  46.         b.work();
  47.         System.out.println("BB overload");
  48.     }
  49.    
  50.     void make(C c) {
  51.         c.work();
  52.         System.out.println("C overload");
  53.     }
  54.    
  55.    
  56.    
  57.    
  58.     public static class Tester2 extends Tester {
  59.  
  60.         @Override
  61.         void make(A a) {
  62.            
  63.             super.make(a);
  64.             System.out.println("Tester2");
  65.         }
  66.  
  67.         @Override
  68.         void make(B b) {
  69.            
  70.             super.make(b);
  71.             System.out.println("Tester2");
  72.         }
  73.  
  74.         @Override
  75.         void make(BB b) {
  76.            
  77.             super.make(b);
  78.             System.out.println("Tester2");
  79.         }
  80.  
  81.         @Override
  82.         void make(C c) {
  83.            
  84.             super.make(c);
  85.             System.out.println("Tester2");
  86.         }
  87.        
  88.  
  89.        
  90.        
  91.     }
  92.    
  93.    
  94.  
  95.     public static void main(String[] args) {
  96.        
  97.         Tester t = new Tester();
  98.         Tester t2 = new Tester2();
  99.         B b = new B();
  100.         BB bb = new BB();
  101.         C c = new C();
  102.        
  103.         A ab = new B();
  104.         A abb = new BB();
  105.         A ac = new C();
  106.        
  107.         B bbb = new BB();
  108.        
  109.        
  110.         t.make(b);
  111.         t.make(bb);
  112.         t.make(c);
  113.         System.out.println("\n");
  114.         t.make(ab);
  115.         t.make(abb);
  116.         t.make(ac);
  117.         System.out.println("\n");
  118.         t.make(bbb);
  119.         System.out.println("\n");
  120.        
  121.         b.huh(t);
  122.         bb.huh(t);
  123.         c.huh(t);
  124.         System.out.println("\n");
  125.         b.huh(t2);
  126.         bb.huh(t2);
  127.         c.huh(t2);
  128.        
  129.        
  130.        
  131.     }
  132.    
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement