많은 초보자는 정적 메서드의 사용법을 파악하지 못할 수 있습니다. 여기서는 내 이해를 설명하겠습니다.
정적 메서드 호출에는 클래스 개체 생성이 필요하지 않습니다.
객체를 생성할 필요가 없으므로 정적 메서드에서는 이 키워드를 사용하지 마세요
정적 메서드에서는 정적 멤버 변수와 정적 메서드만 호출할 수 있습니다. 일반 메서드는 개체를 생성하여 호출해야 하기 때문에 정적 메서드와 충돌합니다. 메서드
정적 멤버 변수는 일반 메서드와 정적 메서드에서 호출할 수 있으며 클래스 이름 형태로 직접 호출할 수 있습니다.정적 메서드
정적 코드 블록은 클래스가 로드될 때 실행되며 한 번만 실행됩니다.
이제 이론은 끝났으니 실제 예를 살펴보겠습니다.
class Person{ static{ System.out.println("person static"); } public Person(String str) { System.out.println("person "+str); } } public class Test { Person person = new Person("Test"); public Test() { System.out.println("test constructor"); } static{ System.out.println("test static 1"); } public static void main(String[] args) { new MyClass(); } static{ System.out.println("test static 2"); } } class MyClass extends Test { Person person = new Person("MyClass"); static{ System.out.println("myclass static"); } public MyClass() { System.out.println("myclass constructor"); } }
먼저 그의 출력을 추측한 다음 비교하여 무엇이 잘못되었는지 확인하고 이해를 심화시키세요
test static 1 test static 2 myclass static person static person Test test constructor person MyClass myclass constructor
먼저 테스트 클래스를 로드합니다. 2개의 정적 코드 블록을 포함하고, test static 1, test static 2
순으로 출력합니다. 이때, 새로운 MyClass 클래스가 로드됩니다. MyClass 클래스에도 정적 코드 블록이 있으며 출력은 다음과 같습니다. myclass static
-
MyClass 클래스는 Test 클래스에서 상속되며, Test 클래스가 로드된 경우 정적 코드 블록의 콘텐츠는 로드가 완료되면 Test 클래스가 실행되기 시작합니다. Person person = new Person("Test")을 실행하면 Person 클래스도 로드되지 않습니다. 정적 코드 블록이 있는 경우
person static -
을 출력하여 Person의 생성자를 실행하고
person Test -
를 출력하여 Test를 계속 실행하고 기본 메서드인 new MyClass()를 입력합니다. 그러나 MyClass는 Test에서 상속됩니다. 클래스, 먼저 Test 클래스 생성자를 실행하고
test 생성자 -
를 출력하고 계속해서 MyClass를 실행합니다. Person person = new Person("MyClass"), Person 클래스 생성자를 실행하고
person MyClass -
을 출력합니다. 및 계속 실행 MyClass 출력의 생성자 메소드
myclass 생성자 실행 완료
이를 바탕으로 다음과 같은 실행 순서를 요약했습니다.
정적 코드 블록——> 서브클래스 생성 방법
생성자와 새 객체가 동시에 존재할 경우 새 객체의 생성자가 먼저 실행됩니다. (이때 루프 중첩이 발생하여 메모리 오버플로가 발생하지 않도록 주의하세요)
관련글 :
자바에서 부모클래스와 서브클래스 로딩 순서에 대한 간략한 설명자바의 상속, 서브클래스 상속 여부 상위 클래스 생성자
위 내용은 Java의 정적 키워드, 상위 클래스 및 하위 클래스 로딩 및 실행 순서 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

封装是一种信息隐藏技术,是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法;封装可以被认为是一个保护屏障,防止指定类的代码和数据被外部类定义的代码随机访问。封装可以通过关键字private,protected和public实现。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于设计模式的相关问题,主要将装饰器模式的相关内容,指在不改变现有对象结构的情况下,动态地给该对象增加一些职责的模式,希望对大家有帮助。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
