git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1487 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| :- object(root,				% avoid infinite metaclass regression by
 | |
| 	instantiates(root)).	% making the class its own metaclass
 | |
| 
 | |
| 	:- public(method/0).
 | |
| 
 | |
| 	method :-
 | |
| 		this(This),
 | |
| 		write('This is the default definition for the method, stored in class '),
 | |
| 		writeq(This), write('.'), nl.
 | |
| 
 | |
| :- end_object.
 | |
| 
 | |
| 
 | |
| 
 | |
| :- object(instance1,		% this instance simply inherits the method/0 predicate
 | |
| 	instantiates(root)).
 | |
| 
 | |
| :- end_object.
 | |
| 
 | |
| 
 | |
| 
 | |
| :- object(instance2,		% this instance provides its own definition for the
 | |
| 	instantiates(root)).	% method/0 predicate
 | |
| 
 | |
| 	method :-
 | |
| 		this(This),
 | |
| 		write('This is an overriding definition stored in the '),
 | |
| 		writeq(This),
 | |
| 		write(' instance itself.'), nl.
 | |
| 
 | |
| :- end_object.
 | |
| 
 | |
| 
 | |
| 
 | |
| :- object(instance3,		% this instance specializes the inherited definition
 | |
| 	instantiates(root)).	% of the method/0 predicate
 | |
| 
 | |
| 	method :-
 | |
| 		this(This),
 | |
| 		write('This is a specializing definition stored in the '),
 | |
| 		writeq(This),
 | |
| 		write(' instance itself.'), nl,
 | |
| 		write('It makes a super call to execute the default definition:'), nl, nl,
 | |
| 		^^method.
 | |
| 
 | |
| :- end_object.
 |