그래서 몇 가지 코드 스 니펫으로 테스트하여 상속 개념을 고수했습니다.왜 유형을 변경하면 회원이 다른 용도로 사용됩니까?
그래서 제 I이 간단한 코드를 테스트 하였다
public class Main{
public static void main(String[] args) {
Bar bar = new Bar();
System.out.println("age = " + bar.age);
bar.test();
}
}
class Foo{
int age = 2;
void test(){
System.out.println("TEST FOO");
}
}
class Bar extends Foo{
int age = 4;
void test(){
System.out.println("TEST BAR");
}
}
및 I 예상대로 출력이었다
이어서age = 4
TEST BAR
가 나는 형태를 변경 선로 (3)에 작은 변화를 만들어 Bar
이 같은 Foo
에 : 나는 대구를 실행 이제
Foo bar = new Bar();
전자는, 내가 생각 출력이 이상한 나에게 제공합니다
age = 2
TEST BAR
는 bar.test();
여전히 방법을 사용하는 동안 코드 bar.age
지금, (의미가)에 Foo
클래스의 age
멤버를 사용하는 일이 발생할 않는 방법 Bar
클래스 (Foo가 아닌 유형이 무엇인지)?
https://stackoverflow.com/questions/12589274/slight-confusion-regarding-overriding-where-variables-are-concerned 또는 https://stackoverflow.com/questions/10722110/overriding-member-variables-in -java –
@RC. 재미있는 독서가 그걸 찾고있었습니다. 감사. – moffeltje
기술적 측면과 함께 : 이렇게하는 것은 가장 중요한 OO 원칙을 위반하기 때문에 ** OOP가 아닙니다 ** 정보 숨기기/캡슐화 *입니다. –