1. Java의 내부 클래스
1) 내부 클래스란: 내부 클래스(Inner Class)는 다른 클래스 종류로 정의됩니다. 따라서 내부 클래스를 포함하는 클래스를 외부 클래스라고 합니다.
2) 하나의 클래스가 다른 클래스 내에 정의되어야 하는 이유는 무엇입니까?
내부 클래스의 주요 기능은 다음과 같습니다.
1> 내부 클래스는 더 나은 캡슐화를 제공하며 동일한 외부 클래스 내에 내부 클래스를 숨길 수 있습니다. 패키지를 사용하여 이 클래스에 액세스할 수 있습니다
2> 내부 클래스의 메서드는 개인 데이터를 포함하여 외부 클래스의 모든 데이터에 직접 액세스할 수 있습니다.
3> 내부 클래스를 사용하는 것이 더 편리합니다
3) 내부 클래스에는 여러 유형이 있습니다: 멤버 내부 클래스, 정적 내부 클래스, 메서드 내부 클래스, 익명 내부 클래스
2. Java의 멤버 내부 클래스
Inner 클래스 가장 일반적인 것은 일반 내부 클래스라고도 하는 멤버 내부 클래스입니다. 다음 코드를 살펴보겠습니다.
위 코드에서 멤버 내부 클래스를 사용하는 방법을 확인할 수 있습니다.
1 Inner 클래스는 Outer 클래스 내부에 정의되어 있으며 이는 다음의 멤버 변수와 동일합니다. Outer 클래스 위치에서 Inner 클래스는 public, protected, private 등과 같은 모든 액세스 제어 문자를 사용할 수 있습니다.
2. Inner 클래스에 정의된 test() 메서드는 Outer 클래스의 데이터에 직접 액세스할 수 있습니다. a
3. 멤버 내부 클래스를 정의한 후 외부 클래스 객체를 사용하여 내부 클래스 객체를 생성해야 하며 직접 생성할 수는 없습니다. 새로운 내부 클래스 객체, 즉: 내부 클래스 객체 이름 = 외부 클래스 Object.new 내부 클래스();
4 위 프로그램을 컴파일하면 두 개의 .class 파일이 생성되는 것을 볼 수 있습니다
그 중 두 번째는 외부 클래스의 .class 파일이고 첫 번째는 내부 클래스입니다. 클래스 파일, 즉 멤버 내부 클래스의 .class 파일은 항상 외부 클래스 이름 $ 내부 클래스 이름과 같습니다. class
또한 주의 사항:
1. 외부 클래스는 내부 클래스의 멤버와 메서드를 직접 사용할 수 없습니다.
먼저 내부 클래스의 개체를 만든 다음 다음을 통해 해당 멤버 변수와 메서드에 액세스할 수 있습니다. 내부 클래스의 객체.
2. 외부 클래스와 내부 클래스의 멤버 변수 또는 메서드가 동일한 경우 내부 클래스는 기본적으로 자체 멤버 변수 또는 메서드에 액세스합니다. this 키워드. 예:
예: 멤버 내부 클래스 Inner가 편집기에서 정의되고, 외부 클래스와 내부 클래스의 속성 값이 내부 클래스의 show 메소드에 출력됩니다.
3. Java의 정적 내부 클래스
정적 내부 클래스는 정적으로 수정된 내부 클래스입니다.
1) 정적 내부 클래스는 외부 클래스의 비정적 멤버에 직접 액세스할 수 없습니다. 하지만 new 외부 클래스().member를 통해 접근할 수 있습니다.
2) 외부 클래스의 정적 멤버가 내부 클래스의 멤버와 이름이 같은 경우 외부 클래스의 정적 멤버는 "class"를 통해 접근할 수 있습니다. name.static 멤버"; 외부 클래스인 경우 외부 클래스의 정적 멤버 이름이 내부 클래스의 멤버 이름과 다른 경우 "멤버 이름"을 통해 외부 클래스의 정적 멤버를 직접 호출할 수 있습니다
3 ) 정적 내부 클래스의 객체 생성 시 외부 클래스의 객체가 필요하지 않고 직접 생성하면 됩니다
내부 클래스 객체 이름 = new inner class();
예:
4 . Java의 메소드 내부 클래스
메소드 내부 클래스는 외부 클래스의 메소드에 정의된 내부 클래스이며, 메소드 내부 클래스는 내부적으로만 표시됩니다. 즉, 이 내부에서만 사용할 수 있습니다. 방법.
PS: 메서드 내부 클래스는 외부 클래스의 메서드 외부에서 사용할 수 없으므로 메서드 내부 클래스에서는 액세스 제어 및 정적 수정자를 사용할 수 없습니다.
5. 수학 수업의 무작위 방법
예: 숫자 추측 게임
档 文6. 제작 문서 설명
package example.make_api; /** * 当前这个ArrayTool这个类是针对数组操作的工具类,里面提供了遍历数组以及获取数组的最大值和 * 查找数组中第一次出现的索引这些功能 * @author 梦竹 * @version V1.0 */ public class ArrayTool { /** * 无参构造私有化的目的,是为了不让外界创建对象 */ private ArrayTool() { } /** * 当前这个方法是针对数组遍历的功能 * @param arr 是需要被遍历的数组 */ public static void printArray(int[] arr) { System.out.print("["); for(int x = 0 ; x < arr.length ;x ++) { //判断 if(x==arr.length-1) { System.out.println(arr[x]+"]"); }else { System.out.print(arr[x]+", "); } } } /** * 当前getMax方法是获取数组中最大值的方法 * @param arr 需要遍历的数组 * @return 返回到就是数组中的最大值 */ public static int getMax(int[] arr) { //定义一个参照物,假设为最大值 int max = arr[0] ; //遍历其他元素 for(int x = 1; x < arr.length ;x ++) { //判断 if(arr[x] > max) { max = arr[x] ; } } return max ; } /** * 当前这个方法是查找数组的某个元素在数组中第一次出现的索引 * @param arr * @param value * @return */ public static int getIndex(int[] arr,int value) { //假设找不到 int index = -1 ; //遍历数组 for(int x = 0 ; x < arr.length ; x ++) { //判断 if(arr[x] == value) { //将当前x索引赋值给index index = x ; break ; } } return index ; } }
Package를 삭제하세요.Example.make_api
관련 기사:
JAVA 시작하기 시스템 튜토리얼(5) 기본 구문(3)JAVA 시작하기 시스템 튜토리얼(6) 객체 지향(캡슐화)
위 내용은 JAVA 입문 시스템 튜토리얼(7) 객체 지향(캡슐화 2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!