(1.1.15) 대상 구성원 변수의 구조 함수와 대상 구조 함수의 집순 및Static,final,abstract,interface
1. 실행 순서 우선순위: [정적 블록, 정적 구성원] > [비정적 블록, 비정적 구성원] > 대상 구성원 변수의 구조 함수 > 대상 구조 함수
변수의 우선순위 > 방법의 우선순위 정적 > 비정상적인 블록과 구성원 변수의 순서는 코드의 선후 순서에 따른다
실질적으로는 기본 구조 방법을 먼저 호출한 다음에 은밀한 슈퍼 () 또는this를 실행하여 부류로 돌아가면 구조 함수의 방법체가 실행을 정지합니다.그리고 부류의 모든 실행이 끝난 후에 부류로 돌아가 코드 블록과 구성원 변수를 초기화한 다음에 함수 방법체를 구성한다
public class Person {
public Person(int id) {
System.out.println("person(" + id + ")");
}
public static void main(String[] args) {
Build b = new Build();
}
}
class Build {
Person p1 = new Person(1);
public Build() {
System.out.println("this is build's block!");
Person p2 = new Person(2);
}
Person p3 = new Person(3);
}
구조기로 클래스와 변수를 초기화하는 순서를 설명하고 싶습니다. 이 프로그램의 출력: person (1) person (3) this is build's Block!son(2)설명: 변수를 어디에 두든지 임의의 방법의 집행 전에 집행한다. 구조 방법을 포함하고 구조 방법은 반드시 집행해야 하는 방법으로 표시할 필요가 없는 호출이다.또한 변수가 어디에 분포하든지 방법 외부에 있으면 반드시 방법보다 먼저 초기화된다.
public class Person {
public Person(int id) {
System.out.println("person(" + id + ")");
}
}
class Build {
/* */
static{
System.out.println("this is static block!");
}
/* */
{
System.out.println("this is non-static block!");
}
static Person p1 = new Person(1);//------------1-----------
public Build() {
System.out.println("this is build's block!");
Person p2 = new Person(2);
}
Person p3 = new Person(3);
public static void main(String[] args) {
Build b = new Build();
}
}
this is static block! person(1) this is non-static block! person(3) this is build’s block! person(2)
Class A{
A(){cout<<"A.A Called"}
A(int i){this(); cout<<"A.A(int) Called"}
}
Class B{
int i=f();
int j;
{
j=37;
Cout<<"Block executed"
}
B(){
this(10);
cout<<"B.B() called"
}
B(int i){
super(i);
cout<<"B.B(int) called";
}
int f(){
cout<<"B.f() called";
return 37;
}
Static{
Cout<<" Static Block executed"
}
}
:
B b=new B();
2-Static의 역할
3-final의 역할
final 클래스는 계승할 수 없습니다. 하위 클래스가 없습니다.final 클래스의 방법은 기본적으로final입니다.final 방법은 이불류의 방법으로 덮을 수 없지만 계승할 수 있습니다.final 구성원 변수는 상수를 표시하며 한 번만 부여받을 수 있으며 부여 후 값은 변하지 않습니다.java는 데이터 구성원을final로 표시하지만 초기 값을 부여하지 않습니다.단, blankfinals는 사용하기 전에 초기화해야 하며, 구조 함수에서 초기화해야 하며, 구조 방법을 수식하는 데 사용할 수 없습니다.주의: 부모 클래스의private 구성원 방법은 클래스 방법으로 덮어쓸 수 없기 때문에private 형식의 방법은final 형식으로 기본적으로 설정됩니다.
public class sa {
final int i; //1、
public sa(int x) {
this.i=x; //2、 ,
}
public void doSomething() {
final int cc;
System.out.println( i);
// System.out.println( cc); //3、 , cc
}
}
4-final static의 역할
5-Abstract 수정자
public class B extends A {
@Override
void a() {
System.out.println();
}
}
abstract class A {
abstract void a();
void b(){
}
}
6-interface[java]
인터페이스로 성명된 클래스는 인터페이스로 추상 클래스보다 더 추상적인 메커니즘이다.인터페이스에서 우리는 어떠한 실현도 제공할 수 없다. 모든 방법은 추상적이어야 하며 abstract 키워드를 추가하지 않아도 된다. 그러나 컴파일러는 인터페이스의 방법에 대해 추상적인 방법으로 직접 처리한다.
7 - static 글로벌 변수와 일반 글로벌 변수의 차이점은 무엇입니까?static 국부 변수와 일반 국부 변수는 어떤 차이가 있습니까?static 함수와 일반 함수는 어떤 차이가 있습니까?C++ 중
전역 변수 자체가 정적 저장 방식이고 정적 전역 변수도 당연히 정적 저장 방식이다.이 두 가지는 저장 방식에 있어서 결코 다르지 않다.이 두 가지 차이는 비정상적인 전역 변수의 작용역은 전체 원본 프로그램이지만 하나의 원본 프로그램이 여러 개의 원본 파일로 구성될 때 비정상적인 전역 변수는 각 원본 파일에서 모두 유효하다는 데 있다.정적 전역 변수는 그 역할 영역을 제한한다. 즉, 이 변수를 정의한 원본 파일에서만 유효하고 같은 원본 프로그램의 다른 원본 파일에서는 사용할 수 없다.정적 전역 변수의 작용역은 하나의 원본 파일에 국한되어 있기 때문에 이 원본 파일의 함수만 공용할 수 있기 때문에 다른 원본 파일에서 오류를 일으키지 않도록 할 수 있습니다.
static 함수는 일반 함수와 작용역이 다르다.static 함수는 이 파일에서만 사용됩니다.현재 원본 파일에서만 사용하는 함수는 내부 함수(static)로 설명하고 내부 함수는 현재 원본 파일에서 설명하고 정의해야 한다.현재 원본 파일 이외에 사용할 수 있는 함수에 대해 하나의 헤더 파일에서 설명해야 한다. 이 함수를 사용하는 원본 파일은 이 헤더 파일을 포함해야 한다. static 전역 변수와 일반적인 전역 변수는 어떤 차이가 있는가. static 전역 변수는 한 번만 활성화시켜 다른 파일 단원에서 인용되지 않도록 한다.static 국부 변수와 일반 국부 변수는 어떤 차이가 있습니까? static 국부 변수는 한 번만 초기화되고 다음에는 지난번 결과 값에 근거합니다.static 함수와 일반 함수는 어떤 차이가 있습니까: static 함수는 메모리에 한 개만 있고 일반 함수는 호출될 때마다 복사본을 유지합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.