상속이란 하위 클래스가 상위 클래스의 특성과 동작을 상속받아 하위 클래스 객체(인스턴스)가 상위 클래스의 인스턴스 필드와 메소드를 가지거나 하위 클래스가 메소드를 상속받는 것을 의미합니다. 상위 클래스에서 하위 클래스가 상위 클래스와 동일한 동작을 갖도록 합니다.
상속을 통해 새로운 클래스를 빠르게 생성하고, 코드 재사용을 실현하고, 프로그램 유지 관리성을 개선하고, 새로운 클래스 생성에 소요되는 시간을 크게 절약하고, 개발 효율성과 품질을 향상시킬 수 있습니다.
상속의 이점:
코드 중복 감소
코드 재사용성 향상
함수 확장 촉진
✅상속 형식: class A extends B{}
A: 클래스, 파생 클래스, 하위 클래스, B: 상위 class, super class, base class, superclass
Reflection: 일단 하위 클래스 A가 상위 클래스 B를 상속하면 하위 클래스 A는 상위 클래스 B에서 선언된 모든 속성과 메서드를 얻습니다. 특히 상위 클래스에서 private으로 선언된 속성이나 메서드의 경우 예입니다. 하위 클래스가 상위 클래스를 상속한 후에도 여전히 상위 클래스의 비공개 구조를 얻은 것으로 간주됩니다. 이는 캡슐화의 영향으로 인해 하위 클래스가 상위 클래스의 구조를 직접 호출할 수 없기 때문입니다
상위 클래스를 상속받은 후 클래스, 하위 클래스는 함수 확장을 실현하기 위해 고유한 속성이나 메서드를 선언할 수도 있습니다. 상위 클래스는 여러 개의 하위 클래스를 가질 수 있습니다. Java에서 클래스의 단일 상속은 하나의 상위 클래스만 가질 수 있습니다. 하위 클래스는 상대적인 개념입니다. 하위 클래스는 간접적으로 상위 클래스입니다. 상속은 간접 부모 클래스라고 합니다. 자식 클래스가 부모 클래스를 상속한 후, 클래스의 부모를 명시적으로 선언하지 않으면 직접 부모 클래스와 모든 간접 부모 클래스에 선언된 속성과 메서드를 얻습니다. 클래스인 경우 이 클래스는 java.lang.Object 클래스에서 상속됩니다. Object 클래스는 모든 Java 클래스의 루트 상위 클래스입니다.
상속 시 주의할 점:
1. 하위 클래스는 상위 클래스를 선택적으로 상속할 수 없습니다.
2 .Java는 다중 상속을 지원하지 않지만 클래스는 다중 인터페이스를 구현할 수 있으므로 단일 상속의 단점을 극복합니다. 3 구성 메서드는 하위 클래스에서 상속되지 않지만 상위 클래스의 구성 메서드는 가능합니다. 서브클래스에서 호출됩니다. 예를 들어class teacher{ //声明一个teacher类为父类 String name; //定义父类的成员变量name、age int age; void show(){ //定义父类成员方法,将成员变量输出 System.out.println(name); System.out.println(age); } } class Student extends teacher { //声明一个Student类为子类并继承父类 } public class myfirst { public static void main(String[] args) { System.out.println("学生"); Student student=new Student(); //声明一个Student类的实例对象student student.name="Tom"; //子类调用父类的成员变量name并赋值 student.age=19; //子类调用父类的成员变量age并赋值 student.show(); //子类调用父类的成员方法show } }
권한 수정자 반환 값 유형 메서드 이름(형식 매개 변수 목록)
반환 값 유형 정보:상위 클래스의 재정의된 메서드의 반환 값 유형은 void입니다. 하위 클래스에 의해 재정의된 메서드의 반환 값 유형은 void일 수 있습니다. 부모 클래스의 재정의된 메서드의 반환 값 유형은 A 유형이며, 하위 클래스에 의해 재정의된 메서드의 반환 값 유형은 void일 수만 있습니다. 클래스에 의해 재정의된 메서드의 반환 값 유형은 클래스 A이거나 클래스 A의 하위 클래스일 수 있습니다부모 클래스의 재정의된 메서드의 반환 값 유형은 기본 데이터 유형(예: double)이고, 반환 값은 하위 클래스에 의해 재정의된 메서드의 값 유형 반환 값 유형은 동일해야 합니다하위 클래스와 상위 클래스에 동일한 이름의 매개 변수가 있는 메서드는 재정의하려면 비정적으로 선언되어야 합니다. not overridden예를 들어하위 클래스의 메서드를 재정의된 메서드라고 하며, 부모 클래스의 메서드를 재정의된 메서드 이름과 형식 매개 변수 목록이라고 합니다. 하위 클래스의 메서드는 상위 클래스의 재정의된 메서드의 메서드 이름 및 형식 매개 변수 목록과 동일하며, 하위 클래스에 의해 재정의된 메서드의 권한 한정자는 해당 메서드의 권한 한정자보다 작지 않습니다. 상위 클래스의 재정의된 메서드 특수한 경우: 하위 클래스는 상위 클래스에서 비공개 권한으로 선언된 메서드를 재정의할 수 없습니다.
class A{ public void sayHello() { //输出英文欢迎 System.out.println("Hello,Welcome to Java!!!"); } public void sayBye() { System.out.println("GoodBye,everyone"); } } class B extends A { public void sayHello() { //输出中文欢迎 System.out.println("大家好,欢迎学习Java!!!"); } } public class myfirst { public static void main(String[] args) { B b=new B(); //创建子类B的一个实例对象,使用默认构造方法 b.sayHello(); //调用子类中重写的方法 b.sayBye(); //调用父类中的方法 } }
Super는 상위 클래스에서 super를 사용하여 속성, 메서드 및 생성자를 호출할 수 있다고 이해됩니다. super는 메서드에서 사용할 수 있습니다. 또는 하위 클래스의 생성자. "super.property" 또는 "super.method"를 사용하면 상위 클래스에 선언된 속성이나 메서드를 명시적으로 호출할 수 있습니다. 그러나 일반적으로 "super.특수 사례: 하위 클래스인 경우 및 When 같은 이름의 속성이 부모 클래스에 정의되어 있는 경우, 부모 클래스에 선언된 속성을 하위 클래스에서 호출하려면 명시적으로 "super.property" 메서드를 사용하여 부모 클래스에 선언된 속성이 있음을 나타내야 합니다. 하위 클래스가 상위 클래스의 메서드를 재정의한 후 하위 클래스의 메서드에서 상위 클래스의 재정의된 메서드를 호출하려면 명시적으로 "super.method" 메서드를 사용하여 메서드가 호출됨을 나타내야 합니다. super는 생성자를 호출합니다부모 클래스에서 선언된 지정된 생성자를 호출하려면 하위 클래스의 생성자에서 "super(형식 매개변수 목록)"를 명시적으로 사용할 수 있습니다. "super(형식 매개변수 목록)"은 서브클래스 생성자의 첫 번째 줄에 선언되어야 합니다. 클래스 생성자에서는 "this(형식 매개변수 목록)" 또는 super(형식 매개변수 목록)"만 대상으로 선택할 수 있습니다. 둘 중 하나이며 동시에 나타날 수 없습니다. 생성자의 첫 번째 줄에는 "this(형식 매개변수 목록)" 또는 "super(형식 매개변수 목록)"에 대한 명시적인 선언이 없습니다. class예를 들어
package first; class A{ public String name="张飞"; //添加成员变量 public void say() { //添加成员方法say System.out.println("我是父类A成员方法say"); } } class B extends A{ public String name="关羽"; //与父类中同名的字段,隐藏父类 public void say(){ //重写方法say super.say(); //使用super关键字调用父类中的方法 System.out.println("我是子类B成员方法say"); System.out.println("父类的name名字:"+super.name); //使用super关键字访问父类中的变量 } } public class myfirst { public static void main(String[] args) { B b=new B(); //创建子类的一个实例对象 b.say(); //调用子类中重写的方法 System.out.println("子类的name名字:"+b.name); //调用子类中的name } }
위 내용은 Java의 상속: 개념 및 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!