Inheritance
Inheritance
Extends keyword ์ฌ์ฉ
Java๋ Single Inheritance ๋ฅผ ํ๋ค
ํ๋ฒ์ ํ๋๋ง ์์ ๋ฐ์ ์ ์๋ค
ex) Dog extends Animal
=> Dog๋ผ๋ class๋ Animal Class๋ฅผ ์์ ๋ฐ๋๋ค
super keyword๋ก ๋ถ๋ชจ class์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค
=> super();
์๋ตํด๋ ์๋ ํธ์ถ๋๋ super()๋ ๋ถ๋ชจ์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ํธ์ถํ๋ค
๋ชจ๋ ๊ฐ์ฒด์ ๋ถ๋ชจ ์์ฑ์๋ object๋ค!!!!!!!!
๋ฉ๋ชจ๋ฆฌ์ ์น์ด์ง ๋๋ ์๋จ์ ๋ถ๋ชจ, ํ๋จ์ ์์
data๋ฅผ search ํ ๋๋ ํ๋จ์ ์์๋ถํฐ ์๋จ์ ๋ถ๋ชจ์ชฝ์ผ๋ก ์ฌ๋ผ๊ฐ๋ ํ์
=> ๋ฐ์์๋ถํฐ ์ฐพ์์ ์์ผ๋ฉด ์ฌ๋ผ๊ฐ๋ ํ์
ex) data type์ด Dog์ด๋ฉด Animal, Object ๋ชจ๋ ์ ๊ทผ ๊ฐ๋ฅํ๋ค-
super๋ฅผ ์ฌ์ฉํ๋ฉด ์์ class ํ๋๋ฅผ jumpํด์ ๋ถ๋ชจ๋ถํฐ search ํ ์ ์๋ค
is a ๊ด๊ณ
=> ๋ชจ๋ ๊ฐ์ฒด์ Data Type์ ๋ถ๋ชจ๊ฐ ๋ ์ ์๋ค
data ํธํ์ ์ํ ๊ด๊ณ์์๋ง ๊ฐ๋ฅํ๋ค
ํ์ ๊ด๊ณ์์๋ ์๋จ!
๋ถ๋ชจ type์ ํ๋จ๋ถ์ ์๋ ์์ data์ ์ ๊ทผ ๋ถ๊ฐ
super();
super();
๋ถ๋ชจ์ ์์ฑ์๋ฅผ ํธ์ถํ๋ค.
์ง์๋ ์๋์ผ๋ก ๋ค์ด๊ฐ!
์์ด๋ ์๋ํธ์ถ ๋จ!
์๋ณด์ด๋ฉด ์๋ต๋์ด์๋ ๊ฒ์!
this() method์ฒ๋ผ first statement์๋ง ํ์ฉ๋๋ค!
๊ทธ๋์ this() method๊ฐ ์ฌ์ฉ๋ ์์ฑ์์์๋ super() ๊ฐ ์๋ ๊ฒ์ ์ ์ ์์
super.______ ํ๋ฉด ์์์ด ์๋๋ผ ๋ถ๋ชจ์์ญ๋ถํฐ search ํ ์ ์๋ค!
this. Keyword
์super. Keyword
๋ชจ๋ heap์์ญ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค!!!!
Method Overloading
ํ๋์ ํด๋์ค ์์๋ ๋์ผํ ์ด๋ฆ์ method๊ฐ ์ฌ๋ฌ๊ฐ ์กด์ฌํ ์ ์๋ค
๋จ, method์ parameter์ type์ด๋ ๊ฐ์๊ฐ ๋ฌ๋ผ์ผํ๋ค!
Constructor
๊ฐ์ฒด ์์ฑ์์ ๋ง๋ค์ด์ง๋ ํจ์
์์ฑ์ ํจ์์ ์ด๋ฆ์ class๋ช ๊ณผ ๋์ผ-
return type์ ๋ํด ์ธ๊ธํ๋ฉด ์๋จ- method overloading์ด ์ ์ฉ๋๋ค
์์ฑ์๋ค๋ method name์ผ๋ก ํธ์ถ ๊ฐ๋ฅํ๋ค
this();
๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์ = default (๊ธฐ๋ณธ) ์์ฑ์
public์ ๋ถ์ผ ์๋ ์ ๋ถ์ผ ์๋ ์๋ค
์ ๊ทผ ์ง์ ์๋ฅผ ์ ํ ์ ์๋ค
Overriding in Java
In any object-oriented programming language, Overriding is a feature that allows a subclass or child class to provide a specific implementation of a method that is already provided by one of its super-classes or parent classes. When a method in a subclass has the same name, same parameters or signature and same return type(or sub-type) as a method in its super-class, then the method in the subclass is said to override the method in the super-class.
๋ถ๋ชจ๋ก๋ถํฐ ๋ฌผ๋ ค ๋ฐ์ ๊ธฐ๋ฅ์ ๋ค์ ์ฌ์ ์ ํ๋ ๊ฒ!
method ์ ์ธ๋ถ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๋ฉด ๋จ!
overriding์๋ ๊ฐ์ ์ฑ์ด ์๋ค!
๊ทธ๋์ ์๋ฌ ์๋ธ.. ์์์ ๊ณ ์ณ๋ผ~
์์์ ๋ํด ์ธ๊ธํ์ง ์์ผ๋ฉด java.lang.object๋ฅผ ์๋์ผ๋ก ์์๋ฐ๋ ๊ฒ์ ์ ์ ์์!
Class Animal extends Object ๋ค!
Object
= ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ method๊ทธ ์ด๋ค ๊ฐ์ฒด๋ ์ต์๋จ์๋ Object!
Is a
๋ชจ๋ ๊ฐ์ฒด์ Data Type์ ๋ถ๋ชจ๊ฐ ๋ ์ ์๋ค!!
๋ชจ๋ ๊ฐ์ฒด์ Data Type์ Object๋ค!
why? Java์ ๋ชจ๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ์ ์ต ์๋จ๋ถ์๋ Object๊ฐ ์๊ธฐ ๋๋ฌธ!
ex1)
Animal์ ๋ถ๋ชจ ๊ฐ์ฒด๋ Object์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์ ์ธ ์ data type์ผ๋ก Object๋ ์ธ ์ ์๋ค!
ํ์ง๋ง Object type์ด๋ฉด, Animal ์์ ์๋ data๋ ์ ๊ทผ ํ ์ ์๊ณ , access ํ ์ ์๋ type์ด ์ต์๋จ๋ถ ๋ง ๊ฐ๋ฅ!!
ex2)
Dog์ ๋ถ๋ชจ ๊ฐ์ฒด๋ก Animal ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์ ์ธ ์ Animal, Object ํ ์ ์๋ค!
Animal๋ก ์ ์ธ์, Dog์ ์ ๊ทผ ๋ถ๊ฐ, Animal ์ด์(Animal + Object) ์ ๊ทผ ๊ฐ๋ฅ
Java์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ Object type์ด ๋ ์ ์์ง๋ง, access ํ ์ ์๋ ์ ๋ณด๊ฐ ์ ํ์ ์!
Type casting์ ํตํด์ ๋ถ๋ชจ ๊ฐ์ฒด์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค!
=> ๊ฐ์ฒด์์์ ์บ์คํ -> Up casting
Ex) ((Animal)d).kind;
โ => ์๋ Dog์ธ ๊ฒDog๋ฅผ Animal๋ก up castingํ๋ฉด ํ๋ฒ์ Animal๋ก ์ ๊ทผ ๊ฐ๋ฅ
Annotations
: a tag that represents the metadata i.e. attached with class, interface, methods or fields to indicate some additional information which can be used by java compiler and JVM.
-> ex) @Override
Polymorphism (๋คํ์ฑ)
the ability of an object to take on many forms
overriding ๊ธฐ์ ์ ์ ๋ชฉํ์ฌ method๋ ํ๋์ธ๋ฐ ๋ค์ํ type์ ๊ฐ์ฒด๋ฅผ ๋ฐ์ ์ ์์!
Last updated