>  기사  >  Java  >  JAVA 튜토리얼 1장 기본 개념 |

JAVA 튜토리얼 1장 기본 개념 |

黄舟
黄舟원래의
2017-02-25 09:41:281321검색

JAVA 1장 기본 개념

JAVA를 배우기 위해서는 먼저 JAVA가 무엇인지, JAVA가 무엇을 할 수 있는지, JAVA가 어떤 개념과 기능을 가지고 있는지부터 알아야 합니다. JAVA가 무엇인지 살펴보겠습니다.

처음 두 기사에서는 JAVA의 몇 가지 개념과 기능을 언급했습니다. 이 기사에서는 나머지 기본 개념을 보충하겠습니다. 물론, 각 글의 개념적인 내용은 리듬을 따르며, 각 글이 한꺼번에 너무 많은 개념을 소개하지는 않을 것입니다.

  • OOP: 객체 지향 프로그래밍, 객체 지향 프로그래밍

  • JAVA의 세 가지 주요 기능

  • JAVA 기타 기본 개념


1. OOP 생각

먼저 역사를 살펴보겠습니다. OOP의 독창적인 아이디어 중 상당수는 Simula 언어에서 유래했으며, Smalltalk 언어의 개선 및 표준화 과정에서 이전 아이디어를 더욱 확장하고 다시 주석을 달았습니다. OO 사고와 OOPL은 거의 동시에 발전하며 서로를 발전시킨다고 할 수 있습니다. 기능적 프로그래밍, 논리 프로그래밍으로 표현되는 기계에 가까운 실제 컴퓨팅 모델과 달리 OOP는 정확한 수학적 설명을 거의 도입하지 않지만 객체 모델은 응용 분야에서 엔터티 간의 관계를 대략적으로 반영할 수 있다는 경향이 있습니다. 인간이 사물을 인식하기 위해 사용하는 철학적 관점에 더 가까운 계산 모델입니다. 이는 자연스러운 주제, 즉 OOP가 정확히 무엇인지로 이어집니다. [D&T 1988][BS 1991] . OOP에서 객체는 계산 주체 역할을 하며 외부 메시지를 수신하기 위한 고유한 이름, 상태 및 인터페이스를 갖습니다. 개체 모델에서는 새 개체 생성, 기존 개체 삭제, 메시지 전송 및 메시지 응답이 OOP 컴퓨팅 모델의 기초를 형성합니다.
객체를 생성하는 기본 방법에는 두 가지가 있습니다.
첫 번째는 프로토타입 객체를 기반으로 새로운 객체를 생성하는 것입니다. 하나는 클래스를 기반으로 새로운 객체를 생성하는 것입니다. 인지 심리학에서 프로토타입 개념은 개념 학습의 점진적 성격을 설명하기 위해 사용되었습니다. 프로토타입 모델 자체는 대표적인 객체를 기반으로 제공하여 다양하고 새로운 객체를 생성하려고 시도하며, 이는 계속해서 객체를 생성합니다. 실제 응용 프로그램과 더 관련이 있습니다. 프로토타입 위임은 OOP의 객체 추상화이자 코드 공유 메커니즘 중 하나이기도 합니다. 클래스는 하나 이상의 개체에 대한 일반적인 설명을 제공합니다. 공식적인 관점에서 클래스는 유형과 관련되어 있으므로 클래스는 클래스에서 파생된 인스턴스 컬렉션과 동일합니다. 이러한 관점은 또한 몇 가지 모순을 가져올 것입니다. 일반적인 것은 상속 시스템에서 하위 집합(하위 클래스) 개체와 부모 집합(부모 클래스) 개체 간의 동작 호환성을 달성하기 어려울 수 있다는 것입니다. 하위 유형이 하위 클래스 [Budd 2002]와 동일하지 않다고 OOP에서 인용되었습니다. 모든 것이 객체라는 세계관의 맥락에서, 클래스 모델을 기반으로 메타클래스를 갖춘 새로운 객체 모델이 탄생했습니다. 즉, 클래스 자체가 다른 클래스의 객체이기도 합니다. 위의 세 가지 근본적으로 다른 관점은 각각 클래스(클래스 기반), 프로토타입 기반(프로토타입 기반) 및 메타클래스 기반(메타클래스 기반)을 기반으로 세 가지 개체 모델을 정의합니다. 그리고 이 세 가지 개체 모델은 다양한 프로그래밍 언어로 이어졌습니다(당분간 정적과 동적의 차이를 제쳐두더라도). 예, 우리가 자주 접하는 C++ 및 Java는 클래스 기반 개체 모델을 사용하지만, 완전히 다른 개체 모델을 사용하는 접하지 않은 OOPL도 많이 있습니다. OOP의 의미.
oop의 기본 아이디어는 무엇인가요?
컴포넌트의 구현과 인터페이스를 분리하여 컴포넌트를 다형성으로 만듭니다. 그러나 둘 사이에는 근본적인 차이점이 있습니다. oop는 프로그램 구성에서 언어 요소의 구문을 강조합니다. 상속하고, 클래스를 사용하고, 객체를 사용해야 하며, 객체는 메시지를 전달해야 합니다. GP는 상속 여부에 상관하지 않으며 제품 분류, 유형 및 작동 방식을 분석하는 것부터 시작합니다. 즉, 두 가지가 동일하다는 것은 무엇을 의미합니까? 평등 연산을 올바르게 정의하는 방법은 무엇입니까? 단순히 평등 연산만은 아니다. 좀 더 깊이 분석해 보면 '평등'이라는 일반적인 개념은 두 객체의 부분, 또는 적어도 기본적인 부분은 동일하다는 것을 의미한다는 것을 알 수 있다. 평등 연산. 물건의 종류에 대해 이야기해 봅시다. 순차 시퀀스와 순차 시퀀스에 대한 일련의 작업이 있다고 가정합니다. 그렇다면 이러한 작업의 의미는 무엇입니까? 복잡성 균형의 관점에서 사용자에게 어떤 종류의 순차적 시퀀스를 제공해야 합니까? 이 시퀀스에는 어떤 작업이 존재합니까? 어떤 종류의 주문이 필요합니까? 이러한 구성요소의 개념적 분류가 명확한 후에만 구현 문제(템플릿, 상속 또는 매크로 사용)를 해결할 수 있습니까? 어떤 언어와 기술이 사용됩니까? gp의 기본 포인트는 표준 분류법을 사용하여 추상적인 소프트웨어 구성 요소와 해당 동작을 분류하는 것입니다. 출발점은 실제적이고 효율적이며 언어 독립적인 알고리즘과 데이터 구조를 구축하는 것입니다. 물론 궁극적인 전달자는 언어이고, 프로그래밍은 언어 없이는 불가능하다. stl은 C++를 사용하고, ada를 사용하여 구현할 수도 있고, 다른 언어로 구현할 수도 있습니다. 결과는 다르지만 기본 사항은 동일합니다. 이진 검색과 정렬은 어디에서나 사용되며 이것이 바로 사람들이 하는 일입니다. 컨테이너의 의미는 언어마다 조금씩 다릅니다. 그러나 기본적인 차이점은 분명히 gp가 의존하는 의미론과 의미론적 분해입니다. 예를 들어, 구성 요소 교체가 필요하다고 결정한 다음 이 구성 요소가 다른 언어에서 어떻게 작동하는지 파악합니다. 분명히 초점은 의미론과 의미론적 분류에 있습니다. oop가 강조하는 것(과도하게 강조된 것 같습니다)은 클래스 간의 계층 관계를 명확하게 정의하는 것입니다. oop는 계층적 관계를 설정하는 방법을 알려주지만 이러한 관계의 본질은 알려주지 않습니다.
(이 문단은 이해하기 쉽지 않습니다. 일부 용어는 한동안 적절한 중국어 번역이 없을 수 있습니다 - 번역기)
객체 지향 프로그래밍 방법 OOP는 1990년대에 개발되었습니다. 소프트웨어 프로그래밍 방법. 이는 객체의 "추상화", "캡슐화", "상속" 및 "다형성"을 강조합니다. 우리는 "데이터 구조" + "알고리즘"으로 구성된 프로그래밍을 이야기합니다. 매크로 관점에서 볼 때 OOP의 개체는 프로그래밍 중심 및 프로그램 지향 개체입니다.

2. JAVA의 3가지 특징(그림)

분석해 보겠습니다.

Java의 구문은 C++의 구문보다 상대적으로 간단합니다. 기본 설명 및 클래스 라이브러리 지원의 크기는 약 40kb이며, 기본 표준 라이브러리 및 스레드 지원을 추가하려면 125kb의 메모리가 필요합니다.

OO: 객체지향 디자인은 포커스(focus) 객체와 해당 인터페이스에 배치되는 프로그래밍 기술입니다.

요약:
추상화는 현재 목표와 관련된 측면에 더 많은 주의를 기울이기 위해 현재 목표와 관련 없는 주제의 측면을 무시하는 프로세스입니다.

추상화는 문제 전체를 이해하려는 것이 아니라, 일부만 선택하고 일부 세부 사항은 생략합니다.

추상화에는 프로세스 추상화와 데이터 추상화라는 두 가지 측면이 있습니다.

2. 상속:

상속은 클래스를 연결하고 클래스의 재사용을 허용하고 장려하는 계층적 모델로, 공통성을 명확하게 표현할 수 있는 방법을 제공합니다.

객체의 새 클래스는 기존 클래스에서 파생될 수 있으며, 이를 클래스 상속이라고 합니다.

새 클래스는 원본 클래스의 특성을 상속받습니다. 새 클래스를 원본 클래스의 파생 클래스(서브클래스)라고 하며 원본 클래스는 새 클래스의 기본 클래스(부모 클래스)라고 합니다.

파생 클래스는 기본 클래스에서 메서드와 인스턴스 변수를 상속받을 수 있으며 클래스는 특별한 요구 사항에 더 적합하도록 새 메서드를 수정하거나 추가할 수 있습니다.

3. 포장:

캡슐화는 프로세스와 데이터를 둘러싸고 있으며, 데이터에 대한 접근은 정의된 인터페이스를 통해서만 가능합니다.

객체 지향 컴퓨팅은 현실 세계가 완전히 자율적이고 캡슐화된 일련의 객체로 표현될 수 있다는 기본 개념에서 시작됩니다. 보호된 인터페이스를 통해 다른 개체에 액세스합니다.

4. 다형성:

다형성 서로 다른 클래스의 객체가 동일한 메시지에 응답하도록 허용합니다.

다형성에는 매개변수화된 다형성과 포함 다형성이 포함됩니다.

다형성 언어는 유연성, 추상화, 행위 공유, 코드 공유 등의 장점을 가지며, 동명의 응용 기능 문제를 잘 해결합니다.

요약: 동적 바인딩에는 매우 중요한 기능이 있습니다. 기존 코드를 수정하지 않고도 프로그램을 확장할 수 있다는 것입니다.

다형성은 개방-폐쇄 원칙의 기초라는 점을 기억하세요.

3. 기타 JAVA 기본 개념

  • String과 StringBuffer의 차이점

JAVA 플랫폼은 문자열을 저장하고 연산할 수 있는 String과 StringBuffer라는 두 가지 클래스를 제공합니다. 즉, 여러 문자를 포함하는 문자 데이터입니다. String 클래스는 수치적으로 변경할 수 없는 문자열을 제공합니다. 이 StringBuffer 클래스에서 제공하는 문자열이 수정됩니다. 문자 데이터가 변경될 것이라는 것을 알고 있는 경우 StringBuffer를 사용할 수 있습니다. 일반적으로 StringBuffer를 사용하여 문자 데이터를 동적으로 생성합니다.

  • int와 Integer의 차이점은 무엇입니까

Java는 참조 유형과 참조 유형이라는 두 가지 유형을 제공합니다. 기본 유형(또는 내장 유형). Int는 Java의 기본 데이터 유형이고 Integer는 int에 대해 Java에서 제공하는 캡슐화 클래스입니다. Java는 모든 기본 유형에 대한 래퍼 클래스를 제공합니다.
기본 유형 -->> 캡슐화 클래스
부울
문자 -->>문자
바이트
-->> Short
int -->> 정수
long -->> float -->> double -->> Double

참조 유형과 기본 유형은 완전히 다르게 동작하며 의미도 다릅니다. 참조 유형과 기본 유형은 서로 다른 특징과 사용법을 가지고 있으며, 여기에는 크기 및 속도 문제, 이 유형이 저장되는 데이터 구조의 유형, 참조 유형과 기본 유형이 클래스의 인스턴스 데이터로 사용될 때 지정되는 내용이 포함됩니다. 기본값. 객체 참조 인스턴스 변수의 기본값은 null인 반면 기본 유형 인스턴스 변수의 기본값은 해당 유형에 따라 다릅니다.


  • 문자열이 가장 기본적인 데이터 타입인가요?

기본 데이터 유형에는 byte, int, char, long, float, double, boolean 및 short가 포함됩니다.

java.lang.String 클래스는 final 타입이므로 상속이나 수정이 불가능합니다. 효율성을 높이고 공간을 절약하려면 StringBuffer 클래스


  • 최종 클래스를 사용해야 합니다. : 다른 사람을 방지하기 위해 귀하의 클래스에서 새 클래스를 파생시킵니다. 이 클래스는 확장할 수 없습니다.

  • Java의 모든 클래스는 Object 클래스에서 확장됩니다.

  • 추상 클래스: 하나 이상의 추상 메서드를 지정하는 클래스 자체는 추상으로 정의되어야 합니다. 예: 공용 추상 문자열 getDescription

  • 오버로드: 여러 메서드가 이름은 같지만 매개 변수가 다르면 오버로드가 발생합니다. 호출할 메서드를 선택해야 합니다.

    .

  • 상속: 클래스를 확장하여 새로운 클래스를 얻는 것을 상속이라고 하며 모든 클래스는 객체 루트 슈퍼 클래스에 의해 확장됩니다. 그러나 루트는 슈퍼클래스는 아래에서 소개하겠습니다.

  • JAVA 객체의 3대 특징

1.ehavior- - -이 개체가 무엇을 할 수 있는지 설명합니다.


2.tate---객체에 메소드를 적용했을 때의 객체의 반영.

3.dentity---다른 유사한 행동 개체와 구별되는 표시입니다.

각 사물은 고유한 정체성을 갖고 있으며 이 세 가지가 서로 영향을 미칩니다.

  • JAVA 클래스 간의 관계:

사용 -a : 종속 관계

has-a: 집합 관계

is-a: 상속 관계 -- 예: 클래스 A는 클래스 B를 상속받습니다. 이때, 클래스 A는 클래스 B의 메소드뿐만 아니라 자신의 메소드도 갖습니다(공통성에 성격이 존재합니다).


  • 생성자를 사용하여 객체 생성: 생성자의 제안, 생성자는 특수 메서드, 생성자 객체를 만들고 초기화합니다.

예: Data 클래스의 생성자는 Data

New Data()-- -Construction 현재 시간으로 초기화된 새 개체입니다.

Data dujinyang=new Data()---두진양 변수에 객체를 할당하여 객체를 여러 번 사용할 수 있도록 선언해야 합니다. 여기서 변수와 개체 변수는

.new 반환된 값은 참조입니다.

생성자 기능:


      1. 생성자는 0개, 하나 이상의 매개변수를 가질 수 있습니다

      2. 생성자와 클래스의 이름은 같습니다

      3. 클래스는 여러 생성자를 가질 수 있습니다

      4. 생성자는 반환 값이 없습니다

      5. 생성자는 항상 new 연산자와 함께 사용됩니다

  • 인터페이스)는 클래스가 수행해야 하는 작업을 설명합니다. 클래스는 수행 방법을 지정하지 않고 하나 이상의 인터페이스를 구현할 수 있습니다.

  • 인터페이스는 클래스가 아니라 인터페이스 쌍의 사양 집합입니다. 필수 수업을 위해.

인터페이스 구현에 2단계가 필요한 경우:

1) 클래스에 필요한 사양 선언 인터페이스를 구현합니다.

2) 인터페이스의 모든 메소드에 대한 정의를 제공합니다.

---- 인터페이스를 구현하기 위해 클래스를 선언하려면 Implements 키워드를 사용해야 하며 인터페이스는 클래스가 아니며 new를 사용하여 인터페이스를 인스턴스화할 수 없습니다.

  • 슈퍼 클래스(기본 클래스)란 무엇인가요? 파생 클래스란 무엇입니까?

클래스에는 하나의 슈퍼 클래스(기본 클래스)만 있지만 클래스는 여러 인터페이스를 구현할 수 있습니다. (기억하세요: Java의 중요한 인터페이스: Cloneable.)

기본 클래스란 무엇인가요? 실제로 상속에는 두 개의 클래스가 있습니다. 하나는 하위 클래스이고 다른 하나는 상위 클래스입니다. 파생 클래스는 하위 클래스와 같습니다.


기본 클래스, 슈퍼 클래스, 상위 클래스 모두 의미는 같고 표현만 다릅니다.


예:


class BaBa{}


클래스 A는 BaBa를 확장합니다.{}


이것은 다음과 같습니다. BaBa는 A의 기본 클래스이고 BaBa는 A의 슈퍼 클래스이며 BaBa는 A의 상위 클래스이고 A는 BaBa의 하위 클래스 또는 파생 클래스입니다.


  • 내부 클래스: 내부 클래스는 다른 클래스 내부에 정의됩니다.

이유는

1) 내부 클래스의 객체는 다음 객체에 접근할 수 있습니다. 개인 데이터를 포함하여 구현을 만들었습니다.

2) 내부 클래스는 동일한 패키지 내의 다른 클래스로부터 숨겨질 수 있습니다.

3) 익명 내부 클래스를 사용하면 콜백을 쉽게 정의할 수 있습니다.

4) 내부 클래스를 사용하면 이벤트 중심의 프로그램을 작성하는 것이 매우 편리합니다.

위 내용은 JAVA 입문 튜토리얼 | 1장 기본 개념입니다. 자세한 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:JAVA 튜토리얼 |다음 기사:JAVA 튜토리얼 |