45 lines
		
	
	
		
			956 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			956 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Classes
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Classes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Basic Usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Declaration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`class` keyword is used to define the class  
							 | 
						||
| 
								 | 
							
								It is consisted of: class name, class header (type parameters, constructor) and class body (curly braces)  
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								class Person { ... }
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Constructor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								There are multiple ways to define class constructor.  
							 | 
						||
| 
								 | 
							
								Primary constructor is part of the class header (name field with data type):
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								class Person(name: String) { ... }
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Secondary constructor: using `constructor` keyword inside class body  
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								class Person {
							 | 
						||
| 
								 | 
							
								  constructor(parent: Person) {
							 | 
						||
| 
								 | 
							
								    parent.children.add(this)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Class instance can be created as regular function   
							 | 
						||
| 
								 | 
							
								There is no need for `new` keyword
							 | 
						||
| 
								 | 
							
								```kotlin
							 | 
						||
| 
								 | 
							
								val john = Person("John Wayne")
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Resources
							 | 
						||
| 
								 | 
							
								* [Basic Syntax Reference](https://kotlinlang.org/docs/reference/basic-syntax.html)
							 | 
						||
| 
								 | 
							
								* [Kotlin Classes Reference](https://kotlinlang.org/docs/reference/classes.html)
							 |