Java에서 데이터 추상화를 구현하는 방법은 무엇입니까?
게시 됨: 2022-05-17추상화, 다형성, 캡슐화 및 상속은 객체 지향 프로그래밍의 네 가지 기본 요소입니다. 그 중 하나인 데이터 추상화는 다음 기사에서 자세히 설명합니다. 또한 Java에서 데이터 추상화를 수행하는 방법을 배웁니다.
데이터 추상화란 무엇입니까?
데이터 추상화는 가장 중요한 세부 사항만 사용자에게 표시되는 특징입니다. 사용자는 사소하거나 중요하지 않은 세부 정보를 알지 못합니다. 예를 들어, 자동차는 별개의 부분이 아니라 전체로 간주됩니다. 불필요한 정보는 버리고 항목의 필요한 속성만 식별하는 관행을 데이터 추상화라고 합니다.
간단히 말해서, 데이터 추상화는 중요하지 않은 요소를 숨기면서 중요한 항목을 사용자에게 표시합니다.
우리는 "abstract" 키워드를 사용하여 클래스와 인터페이스의 도움으로 추상화를 구현합니다. 추상 클래스에는 추상 메서드와 구체적인 메서드가 모두 있을 수 있습니다.
추상 클래스란 무엇입니까?
객체 지향 프로그래밍에서 추상 클래스는 하나 이상의 추상 메서드를 선언하는 클래스입니다. 추상 Java 클래스와 일반 Java 클래스의 유일한 차이점은 추상 클래스에는 abstract 키워드가 포함되어 있지만 일반 Java 클래스에는 포함되어 있지 않다는 것입니다. 추상 클래스 선언의 경우 클래스 이름 앞에 abstract 키워드를 사용합니다. 클래스에는 추상 메서드와 구체적인 메서드가 모두 있을 수 있습니다. 그러나 추상 메서드는 일반 클래스에 존재할 수 없습니다. 하나 이상의 추상 메서드가 있는 클래스를 추상 클래스라고 합니다.
구문은 다음과 같습니다.
공개 추상 클래스 Name_of_Class
{
공개 추상 Name_of_Method();
}
추상 클래스를 구현하는 예는 다음과 같습니다.
//추상 클래스 이름 지정
추상 클래스
{
//추상 메서드 이름 지정
추상 무효 disp();
}
//추상 클래스로 진행
공개 클래스 MainClass는 DemoClass를 확장합니다.
{
//추상 클래스의 메소드 본문 정의
무효 표시()
{
System.out.println("추상 메서드가 호출되었습니다.");
}
공개 정적 무효 메인(String[] 인수)
{
MainClass obj = 새로운 MainClass();
//추상 메소드 호출
obj.디스플레이();
}
}
포인트별로 나열하려면:
- 클래스에 하나 이상의 추상 메서드가 있는 경우 클래스를 추상으로 정의해야 합니다.
- 추상으로 선언된 클래스는 인스턴스화할 수 없습니다.
- 다른 클래스에서 추상 클래스를 상속하고 해당 추상 메서드가 이를 활용하기 위한 구현을 제공해야 합니다.
- 상속하는 경우 추상 클래스의 모든 추상 메서드에 대한 구현을 제공해야 합니다.
추상 방법이란 무엇입니까?
추상 메서드에는 메서드 선언만 있고 구현은 없습니다. 추상 메서드는 자체 본문 없이 메서드로 나타낼 수 있습니다. 추상 메서드는 추상 클래스 내에서만 독점적으로 선언되어야 합니다.
클래스에 메서드가 있지만 해당 메서드의 실제 구현이 자식 클래스에 의해 결정되도록 하려면 부모 클래스에서 메서드를 추상으로 지정합니다.
객체 지향 프로그래밍에서 데이터 추상화의 장점
- 객체 지향 프로그래밍에서 추상화는 프로그램 설계의 복잡성과 소프트웨어 구현 프로세스를 줄입니다.
- Java 프로그래밍에서 추상화를 구현하는 가장 큰 이점은 사용자가 형제와 같은 유사성을 기반으로 클래스를 쉽게 구성할 수 있으므로 데이터 상속 및 데이터 마이그레이션이 쉽고 실현 가능하다는 것입니다.
- 상속이 가능합니다. 예를 들어:
/* 파일명 : DemoAbstract.java */
공개 클래스 DemoAbstract {
공개 정적 무효 메인(문자열 [] 인수) {
/* 다음은 작성할 수 없고 오류를 시작합니다. */
직원 e = 신규 직원("Peter D.", "Hartford, CT", 35);
System.out.println("\n 직원 참조를 사용하고 MailCheck를 호출하세요-");
e.mailCheck();
}
}
다음 오류가 표시됩니다.
Employee.java:46: 직원은 추상입니다. 인스턴스화할 수 없음
직원 e = 신규 직원("Peter D.", "Hartford, CT", 35);
^^
오류 1개
따라서 추상 클래스 사용법을 다음과 같이 사용합니다.
/* 파일명 : employee.java */
공개 추상 클래스 직원 {
개인 문자열 N;
개인 문자열 추가;
개인 정수 번호;
공개 직원(문자열 N, 문자열 추가, 정수 번호) {
System.out.println("직원 구성");
this.name = N;
this.address = 추가;
this.number = 숫자;
}
공개 이중 계산_지불() {
System.out.println("내부 직원 계산_지불");
0.0을 반환합니다.
}
공개 무효 Mailcheck() {
System.out.println(“수표를 ” + this.name + ” ” + this.address로 우편 발송);
}
공개 문자열 toString() {
반환 N + ” ” + 더하기 + ” ” + N;
}
공개 문자열 getName() {
반환 N;
}
공개 문자열 getAddress() {
반환 추가;
}
공개 무효 setAddress(문자열 newAddress) {
추가 = newAddress;
}
공개 정수 getNumber() {
반환 번호;
}
}
추상 클래스나 추상 메서드는 언제 사용합니까?
"모양"의 일반적인 예를 고려할 때 컴퓨터 지원 설계 시스템이나 비디오 게임 시뮬레이션과 관련하여 사용되는 것을 상상할 수 있습니다. 여기에서 언급된 기본 유형은 "모양"이며 모든 모양에는 고유한 색상 속성, 크기 등이 있습니다. 원, 정사각형, 삼각형 등의 특정 모양 클래스는 여기서 파생(상속)되며, 각각 고유한 속성과 동작이 추가로 있을 수 있습니다. 예를 들어 특정 모양은 대칭일 수 있지만 다른 모양은 그렇지 않습니다. 셰이프 간의 유사점과 뚜렷한 차이점은 모두 유형 계층 구조로 구현됩니다.
따라서 모양은 추상 클래스와 유사할 수 있지만 다른 유형의 모양은 구체적인 클래스로 표시할 수 있습니다.
다음은 추상 클래스를 설명하는 실제 시나리오입니다.
// 추상화를 보여주는 자바 프로그램
추상 클래스 모양 {
문자열 색상;
추상 이중 영역();
공개 추상 문자열 toString();
// 추상 클래스는 생성자를 가질 수 있습니다.
공공 모양(문자열 색상)
{
System.out.println("모양 생성자 호출");
this.color = 색상;
}
// 이것은 구체적인 방법이다
public String getColour() { 색상을 반환합니다. }
}
클래스 서클 확장 모양 {
더블 r;
public Circle(문자열 색상, 이중(r)
{
// Shape 생성자 호출
슈퍼(컬러);
System.out.println("원 생성자 호출");
this.r = r;
}
@이중 영역 재정의()
{
반환 Math.PI * Math.pow(r, 2);
}
@Override 공개 문자열 toString()
{
반환 "원 색상은" + super.getColor()
+ "그리고 면적은 : " + area();
}
}
클래스 직사각형 확장 모양 {
이중 길이;
이중 너비;
public Rectangle(문자열 색상, 이중 길이,
두 배 너비)
{
// Shape 생성자 호출
슈퍼(컬러);
System.out.println("사각형 생성자 호출");
this.length = 길이;
this.width = 너비;
}
@Override 이중 영역() { 반환 길이 * 너비; }
@Override 공개 문자열 toString()
{
return "사각형 색상은 " + super.getcolor()
+ "그리고 면적은 : " + area();
}
}
공개 클래스 테스트 {
공개 정적 무효 메인(String[] 인수)
{
모양 s1 = new Circle("빨간색", 2.2);
모양 s2 = new Rectangle("노란색", 2, 4);
System.out.println(s1.toString());
System.out.println(s2.toString());
}
}
이 코드 부분은 here 의 수정된 버전입니다 .
Java에서 데이터 추상화가 사용되는 프로그램의 코드 스니펫:
// 자바의 추상화
추상 클래스 ElecBill
{
//추상 메소드
추상 float compBill();
}
클래스 Comm 확장 ElecBill
{
float compBill() {
반환 1.00*100;
}
}
클래스 국내 확장 ElecBill
{
float compBill() {
반환 0.50*75;
}
}
결론
데이터 추상화는 객체 지향 프로그래밍의 중요한 측면입니다. Java와 같은 언어의 경우 추상화 및 상속, 캡슐화 및 다형성과 같은 기타 OOP 개념은 효율적인 프로그램을 작성하는 데 중요한 역할을 합니다.
OOP를 심도 있게 배우고 일류 프로그래밍 기술을 습득 하고 싶다면 Java, OODAP, DSA, HTML5, CSS3 기술 습득을 돕기 위해 고안된 소프트웨어 공학의 Job-linked PG Certification upGrad에 가입하는 것이 좋습니다. , JavaScript, MERN, AWS, SQL 및 NoSQL 데이터베이스, Spring Boot 등 5개월 과정은 MERN 스택 전문화 및 클라우드 네이티브 전문화의 두 가지 전문 분야를 다루고 upGrad 360° 직업 상담 세션에 대한 액세스를 제공합니다.
세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
다형성이란 무엇입니까? 데이터 추상화와 어떻게 다릅니까?
다형성은 데이터 추상화와 유사한 일반화이지만 런타임에 발생합니다. 서로 구별할 수 없는 고유한 개체 유형 컬렉션에 액세스하는 메커니즘이 있는 경우 해당 유형은 다형성입니다. 따라서 동일하지 않더라도 내부의 모든 물체는 동일한 모양과 느낌을 갖습니다. 목표는 코딩을 대폭 줄이는 것입니다. 각 개별 유형에 대한 수많은 순열을 모두 작성하는 대신 하나의 범용 솔루션을 작성할 수 있습니다.
캡슐화와 데이터 추상화의 차이점은 무엇입니까?
캡슐화 - 1. 캡슐화는 데이터(정보)를 숨기지만 추상화는 세부 정보를 숨깁니다(구현 숨기기). 2. 객체 지향 프로그래밍의 추상화는 설계 수준에서 문제를 해결합니다. 3. 보안을 위해 캡슐화는 내부 정보를 숨기거나 개체가 수행하는 방식에 대한 메커니즘을 의미합니다. 추상화 - 1. 캡슐화가 데이터와 이에 작동하는 메소드를 함께 묶는 반면, 데이터 추상화는 구현 세부 사항을 모호하게 하면서 사용자 인터페이스를 노출하는 것과 관련이 있습니다. 2. 캡슐화를 통해 구현 수준에서 해결됩니다. 3. Java에서 데이터 추상화를 사용하면 정보 개체가 포함해야 하는 내용에 집중할 수 있습니다.
인터페이스와 추상 클래스의 차이점은 무엇입니까?
인터페이스 - 1. 추상 메소드만이 인터페이스의 일부가 됩니다. 2. 다중 상속이 지원됩니다. 3. 추상 클래스의 구현을 제공할 수 없습니다. 4. 공용 추상 메소드만 인터페이스에서 허용됩니다. 5. 공용 정적 최종 변수는 인터페이스에서 하나만 사용할 수 있습니다. 추상 클래스 - 1. 추상 및 비 추상 메서드는 추상 클래스에서 찾을 수 있습니다. 2. 다중 상속은 지원하지 않습니다. 3. 인터페이스 구현이 가능하다. 4. 보호 및 추상 공용 메서드는 추상 클래스에서 모두 가능합니다. 5. 모든 액세스 지정자를 사용하여 추상 클래스는 최종, 정적 또는 정적 최종 변수를 가질 수 있습니다.