38 lines
		
	
	
		
			906 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			906 B
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package tests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Base
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   public function new() {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   @:nonVirtual public function getNvName() return "Base";
							 | 
						||
| 
								 | 
							
								   public function getName() return "Base";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Derived extends Base
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   @:nonVirtual override public function getNvName() return "Derived";
							 | 
						||
| 
								 | 
							
								   override public function getName() return "Derived";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestNonVirtual extends haxe.unit.TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								   public function testOverride()
							 | 
						||
| 
								 | 
							
								   {
							 | 
						||
| 
								 | 
							
								      var derived = new Derived();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      assertTrue( derived.getName() == "Derived" );
							 | 
						||
| 
								 | 
							
								      assertTrue( derived.getNvName() == "Derived" );
							 | 
						||
| 
								 | 
							
								      var closure:Dynamic = derived.getNvName;
							 | 
						||
| 
								 | 
							
								      assertTrue( closure() == "Derived" );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var base:Base = derived;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      assertTrue( base.getName() == "Derived" );
							 | 
						||
| 
								 | 
							
								      assertTrue( base.getNvName() == "Base" );
							 | 
						||
| 
								 | 
							
								      var closure:Dynamic = base.getNvName;
							 | 
						||
| 
								 | 
							
								      assertTrue( closure() == "Base" );
							 | 
						||
| 
								 | 
							
								   }
							 | 
						||
| 
								 | 
							
								}
							 |