From eb6e1117cbb153841860b1b5f667c12245545db2 Mon Sep 17 00:00:00 2001 From: Devrath Date: Fri, 26 Jan 2024 20:57:19 +0530 Subject: [PATCH] added --- .../java/com/istudio/app/main/MainActivity.kt | 2 +- .../basic_fundamentals/ui/KotlinBasicsDemo.kt | 17 ++++++++ .../ui/KotlinBasicsDemoVm.kt | 42 +++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/application/KotlinConcepts/app/src/main/java/com/istudio/app/main/MainActivity.kt b/application/KotlinConcepts/app/src/main/java/com/istudio/app/main/MainActivity.kt index f37f6a5..c989292 100644 --- a/application/KotlinConcepts/app/src/main/java/com/istudio/app/main/MainActivity.kt +++ b/application/KotlinConcepts/app/src/main/java/com/istudio/app/main/MainActivity.kt @@ -69,7 +69,7 @@ class MainActivity : ComponentActivity() { NavHost( navController = navController, - startDestination = ModuleDemo.FlattenFlowsDemo.rout + startDestination = ModuleDemo.DemoSelection.rout ) { // Selection Screen composable(ModuleDemo.DemoSelection.rout) { diff --git a/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemo.kt b/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemo.kt index 46d985f..6ef4559 100644 --- a/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemo.kt +++ b/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemo.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavHostController import com.istudio.app.ui.composables.AppButton +import com.istudio.app.ui.composables.AppText @Composable fun KotlinBasicsDemo(navController: NavHostController) { @@ -103,6 +104,22 @@ fun KotlinBasicsDemo(navController: NavHostController) { viewModel.membersPrivateDemo() }) + Spacer(modifier = Modifier.height(16.dp)) + + AppButton(text = "Init block significance", onClick = { + viewModel.initBlockSignificanceDemo() + }) + + Spacer(modifier = Modifier.height(16.dp)) + + AppText(text = "Constructors Demo") + + Spacer(modifier = Modifier.height(5.dp)) + + AppButton(text = "Primary Constructor", onClick = { + viewModel.primaryConstructorDemo() + }) + } } \ No newline at end of file diff --git a/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemoVm.kt b/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemoVm.kt index 781f98a..ffb5fed 100644 --- a/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemoVm.kt +++ b/application/KotlinConcepts/app/src/main/java/com/istudio/app/modules/module_demos/basic_fundamentals/ui/KotlinBasicsDemoVm.kt @@ -237,4 +237,46 @@ class KotlinBasicsDemoVm @Inject constructor( ) : ViewModel() { class Person(name: String) class Student(val name: String) + + /** + * Init block significance + */ + fun initBlockSignificanceDemo() { + println("Before City Class construction") + val demo = City("New York") + println("After City Class construction") + demo.demo() + } + + class City(val name: String){ + init { + println("City is created with Name:-> $name") + } + + fun demo(){ + println("City construction is in progress") + } + } + + + /** + * Primary constructor demo + */ + fun primaryConstructorDemo() { + val science = Science() + val history = History() + // val maths = Maths() // Cannot access '': it is private in 'Maths' + } + + // Class with default constructor(way 1) + class Science() + // Class with default constructor(way 2) + class History constructor() + // Class with private constructor + class Maths private constructor() + // Class with protected constructor constructor + class Computers protected constructor() + + + } \ No newline at end of file