java
이 자습서에서는 예제를 통해 Java 다형성 및 구현에 대해 알아봅니다.
다형성은 객체 지향 프로그래밍의 중요한 개념입니다. 단순히 하나 이상의 형식을 의미합니다.
즉, 동일한 엔터티(메서드 또는 연산자 또는 개체)가 다른 시나리오에서 다른 작업을 수행할 수 있습니다.
<시간>
class Polygon {
// method to render a shape
public void render() {
System.out.println("Rendering Polygon...");
}
}
class Square extends Polygon {
// renders Square
public void render() {
System.out.println("Rendering Square...");
}
}
class Circle extends Polygon {
// renders circle
public void render() {
System.out.println("Rendering Circle...");
}
}
class Main {
public static void main(String[] args) {
// create an object of Square
Square s1 = new Square();
s1.render();
// create an object of Circle
Circle c1 = new Circle();
c1.render();
}
}
출력
Rendering Square... Rendering Circle...
위의 예에서 우리는 슈퍼클래스를 생성했습니다:Polygon 및 두 개의 하위 클래스:Square 및 원 . render()
사용에 주의하세요. 방법.
render()
의 주요 목적 방법은 모양을 렌더링하는 것입니다. 그러나 정사각형을 그리는 과정은 원을 그리는 과정과 다릅니다.
따라서 render()
메소드는 클래스에 따라 다르게 동작합니다. 또는 render()
라고 말할 수 있습니다. 다형성입니다.
다형성을 사용하면 일관된 코드를 만들 수 있습니다. 이전 예에서 다른 메서드를 만들 수도 있습니다. renderSquare()
및 renderCircle()
정사각형 렌더링 및 원 , 각각.
이것은 완벽하게 작동합니다. 그러나 모든 모양에 대해 다른 방법을 만들어야 합니다. 코드가 일관성이 없게 됩니다.
이 문제를 해결하기 위해 Java의 다형성을 사용하면 render()
단일 메서드를 만들 수 있습니다. 모양에 따라 다르게 작동합니다.
참고 :print()
방법은 또한 다형성의 예입니다. char
와 같은 다양한 유형의 값을 인쇄하는 데 사용됩니다. , int
, string
등
다음 방법을 사용하여 Java에서 다형성을 달성할 수 있습니다.
Java에서 상속하는 동안 수퍼 클래스와 하위 클래스 모두에 동일한 메소드가 있는 경우. 그런 다음 하위 클래스의 메서드가 슈퍼 클래스의 동일한 메서드를 재정의합니다. 이를 메서드 재정의라고 합니다.
이 경우 동일한 메서드가 수퍼클래스에서 한 작업을 수행하고 하위 클래스에서 다른 작업을 수행합니다. 예를 들어,
class Language {
public void displayInfo() {
System.out.println("Common English Language");
}
}
class Java extends Language {
@Override
public void displayInfo() {
System.out.println("Java Programming Language");
}
}
class Main {
public static void main(String[] args) {
// create an object of Java class
Java j1 = new Java();
j1.displayInfo();
// create an object of Language class
Language l1 = new Language();
l1.displayInfo();
}
}
출력 :
Java Programming Language Common English Language
위의 예에서 Language라는 슈퍼클래스를 만들었습니다. 및 Java라는 하위 클래스 . 여기에서 메소드 displayInfo()
두 언어 모두에 존재합니다. 및 자바 .
displayInfo()
사용 정보를 출력하는 것입니다. 그러나 Language에서 다른 정보를 인쇄하고 있습니다. 및 자바 .
메소드 호출에 사용한 객체를 기준으로 해당 정보를 출력합니다.
<그림>참고 :호출되는 메소드는 프로그램 실행 중에 결정됩니다. 따라서 메서드 재정의는 런타임 다형성입니다. .
<시간>Java 클래스에서 매개변수가 다른 경우 동일한 이름의 메소드를 작성할 수 있습니다. 예를 들어,
void func() { ... }
void func(int a) { ... }
float func(double a) { ... }
float func(int a, float b) { ... }
이것은 Java에서 메소드 오버로딩으로 알려져 있습니다. 여기에서 동일한 메소드가 매개변수에 따라 다른 작업을 수행합니다.
class Pattern {
// method without parameter
public void display() {
for (int i = 0; i < 10; i++) {
System.out.print("*");
}
}
// method with single parameter
public void display(char symbol) {
for (int i = 0; i < 10; i++) {
System.out.print(symbol);
}
}
}
class Main {
public static void main(String[] args) {
Pattern d1 = new Pattern();
// call method without any argument
d1.display();
System.out.println("\n");
// call method with a single argument
d1.display('#');
}
}
출력 :
********** ##########
위의 예에서 Pattern이라는 클래스를 만들었습니다. . 클래스에 display()
라는 메서드가 포함되어 있습니다. 과부하입니다.
// method with no arguments
display() {...}
// method with a single char type argument
display(char symbol) {...}
여기서 display()
의 주요 기능은 패턴을 인쇄하는 것입니다. 그러나 전달된 인수를 기반으로 메서드는 다른 작업을 수행하고 있습니다.
*
의 패턴을 출력합니다. , 인수가 전달되지 않은 경우 또는char
인 경우 매개변수의 패턴을 인쇄합니다. 유형 인수가 전달되었습니다.참고 :호출되는 메소드는 컴파일러에 의해 결정됩니다. 따라서 컴파일 타임 다형성이라고도 합니다.
<시간>Java의 일부 연산자는 피연산자에 따라 다르게 동작합니다. 예를 들어,
+
연산자는 숫자 덧셈과 문자열 연결을 수행하기 위해 오버로드되었으며&
과 같은 연산자 , |
및 !
논리 및 비트 연산에 대해 오버로드됩니다.연산자 오버로딩을 사용하여 다형성을 달성하는 방법을 살펴보겠습니다.
+
연산자는 두 엔터티를 추가하는 데 사용됩니다. 그러나 Java에서는 +
연산자는 두 가지 작업을 수행합니다.
1. +
일 때 숫자(정수 및 부동 소수점 숫자)와 함께 사용되며 수학적 덧셈을 수행합니다. 예를 들어,
int a = 5;
int b = 6;
// + with numbers
int sum = a + b; // Output = 11
2. +
을 사용할 때 연산자를 문자열로 사용하면 문자열 연결(두 문자열 결합)을 수행합니다. 예를 들어,
String first = "Java ";
String second = "Programming";
// + with strings
name = first + second; // Output = Java Programming
여기에서 +
연산자는 Java에서 오버로드되어 추가의 두 가지 작업을 수행합니다. 및 연결 .
참고 :C++와 같은 언어에서는 다른 피연산자에 대해 다르게 작동하도록 연산자를 정의할 수 있습니다. 그러나 Java는 사용자 정의 연산자 오버로딩을 지원하지 않습니다.
<시간>다른 조건에서 다른 값을 참조하는 경우 변수를 다형성이라고 합니다.
객체 변수(인스턴스 변수)는 Java에서 다형성 변수의 동작을 나타냅니다. 클래스의 객체 변수는 해당 클래스의 객체뿐만 아니라 하위 클래스의 객체도 참조할 수 있기 때문입니다.
class ProgrammingLanguage {
public void display() {
System.out.println("I am Programming Language.");
}
}
class Java extends ProgrammingLanguage {
@Override
public void display() {
System.out.println("I am Object-Oriented Programming Language.");
}
}
class Main {
public static void main(String[] args) {
// declare an object variable
ProgrammingLanguage pl;
// create object of ProgrammingLanguage
pl = new ProgrammingLanguage();
pl.display();
// create object of Java class
pl = new Java();
pl.display();
}
}
출력 :
I am Programming Language. I am Object-Oriented Programming Language.
위의 예에서 객체 변수 pl을 만들었습니다. ProgrammingLanguage 수업. 여기, pl 다형성 변수입니다. 그 이유는
pl = new ProgrammingLanguage()
에서 , pl ProgrammingLanguage 개체 참조 수업.pl = new Java()
문에서 , pl Java 객체 참조 수업.이것은 자바에서 업캐스팅하는 예입니다.
java
Java에서 split() 문자열이란 무엇입니까? StrSplit() 메소드를 사용하면 특정 Java 문자열 구분 기호를 기반으로 문자열을 분리할 수 있습니다. 대부분 Java 문자열 분할 속성은 문자열을 나누거나 분할하려는 공백 또는 쉼표(,)입니다. split() 함수 구문 public String split(String regex) public String split(String regex, int limit) 매개변수 정규식:Java 분할의 정규식이 텍스트/문자열에 적용됨 제한:Java 문자열 분할의 제한은 배열의
Java 메소드는 작업을 수행하기 위해 함께 그룹화되는 명령문의 모음입니다. System.out.println()을 호출할 때 예를 들어, 시스템은 콘솔에 메시지를 표시하기 위해 실제로 여러 명령문을 실행합니다. 이제 반환 값이 있거나 없는 고유한 메서드를 만들고 매개 변수가 있거나 없는 메서드를 호출하고 프로그램 디자인에서 메서드 추상화를 적용하는 방법을 배웁니다. 생성 방법 메소드의 구문을 설명하기 위해 다음 예를 고려하십시오 - 구문 public static int methodName(int a, int b) {