Skip to content

Commit

Permalink
add SuperConstruct examples
Browse files Browse the repository at this point in the history
  • Loading branch information
yennanliu committed Feb 11, 2021
1 parent 565e3ef commit 7ac4de4
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@
// *** transform emp to Employer_03 class (asInstanceOf)
emp.asInstanceOf[Employer_03].sayHello() // downward transform
```
- [SuperConstruct scala](./src/main/scala/ScalaBasic/SuperConstruct.scala), [SuperConstruct1 java](./src/main/scala/ScalaBasic/SuperConstruct1_java.java) - Scala/Java Super constructor examples

5. Scala class, trait, abstract class..
- [Trait](./src/main/scala/ScalaBasic/TraitDemo.scala), [TraitAbstract](./src/main/scala/ScalaBasic/TraitAbstract.scala), [TraitDemo2](./src/main/scala/ScalaBasic/TraitDemo2.scala), [TraitAsInterface](./src/main/scala/ScalaBasic/TraitAsInterface.scala) - Scala `TraitDemo`, `Trait Abstract` basic op, properties. *NOTICE* : `Scala traits don’t allow constructor parameters` (so that's why we use abstract class)
- [Abstract Class](./src/main/scala/ScalaBasic/AbstractClass.scala), [AbstractDemo](./src/main/scala/ScalaBasic/AbstractDemo.scala) - Scala also has a concept of an abstract class that is similar to Java’s abstract class. But because traits are so powerful, you rarely need to use an abstract class. In fact, you only need to use an abstract class when:
Expand Down
33 changes: 33 additions & 0 deletions src/main/scala/ScalaBasic/SuperConstruct.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package ScalaBasic

// https://www.youtube.com/watch?v=EeN3v0zAsgg&list=PLmOn9nNkQxJEqCNXBu5ozT_26xwvUbHyE&index=80

object SuperConstruct extends App {

// run 1
val emp = new Employer_5("tom")
println(emp.name)

println("---------------------")

// run 2
val emp2 = new Employer_5()
println(emp2.name)
}

// Person_5 is Employer_5's father class
// Person_5's default main constructor is Person_5()
class Person_5 {
var name = "kyo"
println("Person_5 ....")
}

// Employer_5 is Person_5's children class
// Employer_5's default main constructor is Employer_5()
class Employer_5 extends Person_5 {
def this(name: String){
this // have to call main constructor at beginning
this.name = name
println("Employer_5 ....")
}
}
34 changes: 34 additions & 0 deletions src/main/scala/ScalaBasic/SuperConstruct1_java.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package ScalaBasic;

// https://www.youtube.com/watch?v=EeN3v0zAsgg&list=PLmOn9nNkQxJEqCNXBu5ozT_26xwvUbHyE&index=80

import com.sun.tools.internal.ws.wsdl.document.soap.SOAPUse;

public class SuperConstruct1_java {
public static void main(String[] args){
System.out.println("SuperConstruct1 ...");

}
}

class A_java {
public A_java(){
System.out.println("A()");
}
public A_java(String name){
System.out.println("A(String name)" + name);
}
}

class B_java extends A_java{
public B_java(){
// here java will "implicitly" use super(),
// i.e. A_java() (without param)
System.out.println("B()");
}

public B_java(String name){
super(name);
System.out.println("B(String name)" + name);
}
}

0 comments on commit 7ac4de4

Please sign in to comment.