상속
//SpiderMan .java
class Person {
String name;
void eat() {
System.out.println("먹습니다");
}
void jump() {
System.out.println("점프합니다.");
}
}
public class SpiderMan extends Person{
boolean isSpider;
SpiderMan(String name){
this.name=name;
}
void fireWeb() {
System.out.println("거미줄을 사용합니다.");
}
void printName() {
System.out.println(this.name);
}
}
//SpiderManTest.java
public class SpiderManTest {
public static void main(String[] args) {
SpiderMan sm1=new SpiderMan("Harry");
sm1.eat();
sm1.fireWeb();
sm1.printName();
}
}
먹습니다
거미줄을 사용합니다.
Harry
*SpiderMan is a Person
Has a관계
//Person.java
public class Person {
String name;
void jump() {
System.out.println("보통점프!");
}
}
//SpiderMan.java
public class SpiderMan extends Person{
Spider spider=new Spider();
void fireWeb() {
if(this.isSpider) {
spider.jump();//Spider는 상속받지 못하기에 멤버 변수로 처리하여 특성을 사용
}else {
super.jump();
}
}
}
오버라이딩
//Person.java
public class Person {
void jump() {
System.out.println("점프!");
}
}
public class SpiderMan extends Person{
void jump() {//Person의 jump()를 오버라이딩 하여 덮어씌웠다.
System.out.println("거미 점프!");
}
}
super
//Person.java
public class Person {
void jump() {
System.out.println("점프!");
}
}
public class SpiderMan extends Person{
boolean isSpider;
SpiderMan(String name){
this.name=name;
}
void jump() {
if (isSpider) {
System.out.println("거미점프~!");
}else {
super.jump();
}
}
}
class Parent{
String x="parent";
}
class Child extends Parent{
String x="child";
void method() {
String x="method";
System.out.println("x : "+x);
System.out.println("this.x : "+this.x);
System.out.println("super.x : "+super.x);
}
}
public class ScoreTest {
public static void main(String[] args) {
Child child=new Child();
child.method();
}
}
x : method
this.x : child
super.x : parent
*Child는 Parent에게 상속받았지만 이미 동일한 변수의 이름이 있어 this.name은 상속받지 못했다.
class Person1{
String name;
//1번
Person1(String name){
this.name=name;
}
}
public class SpiderManTest extends Person1 {
Boolean isSpider;
// SpiderManTest(){
// 아무것도 없다면 다음 super()가 자동으로 삽입된다. 하지만 현재 Person1()이라는 생성자가 정의되어 있지 않으므로 오류가난다.
// }
//2번
SpiderManTest(String name,boolean isSpider){
super(name);//1번생성자 사용
this.isSpider=isSpider;
}
//3번
SpiderManTest(String name){
this(name,true);//2번생성자 사용
}
public static void main(String[] args) {
SpiderManTest sp1=new SpiderManTest("피터");
}
}
Annotation