>  기사  >  Java  >  Java에서 클래스란 무엇입니까? 수업 관련 소개

Java에서 클래스란 무엇입니까? 수업 관련 소개

青灯夜游
青灯夜游원래의
2018-09-18 15:26:582275검색

이 장에서는 Java에서 클래스가 무엇인지 설명합니다. 관련 수업 소개를 통해 누구나 수업에 대한 지식을 알 수 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

class Point{
    constructor(){

    }

    toString(){

    }
}

console.log(Object.keys(Point.prototype))
console.log(Object.getOwnPropertyNames(Point.prototype))

위는 클래스입니다

1. 클래스의 데이터 유형은 함수이고 클래스 자체는 생성자를 가리킵니다

console.log(typeof Point)  // "function"
console.log(Point ===Point.prototype.constructor)  // true

2. 생성자의 프로토타입 속성은 ES6 "클래스"에 계속 존재합니다. . 실제로 클래스의 모든 메서드는 클래스의 프로토타입 속성에 정의됩니다.

로 시작하는 코드는

class Point{}
Point.prototype = {
    constructor() {},
    toString() {},
}

와 동일합니다. 클래스의 메소드(생성자 제외)는 모두 프로토타입 객체에 정의되어 있으므로 프로토타입 객체에 클래스의 새로운 메소드를 추가할 수 있습니다. Object.sign 메서드는 한 번에 여러 메서드를 클래스에 추가할 수 있습니다

매우 중요한 점클래스 내부에 정의된 모든 메서드는 열거 불가능합니다.

console.log(Object.keys(Point.prototype))  // []
console.log(Object.getOwnPropertyNames(Point.prototype))  // ["constructor", "toString"]

그 중 Object.keys()는 Symbol을 제외하고 객체 자체의 열거 가능한 모든 속성을 포함하는 배열을 반환하고, Object.getOwnPropertyNames()는 Symbol

3 생성자 메서드를 제외한 모든 자체 속성을 포함하는 배열을 반환합니다.

생성자 메서드는 클래스의 기본 메서드입니다. 이 메서드는 새 명령을 통해 객체 인스턴스를 생성할 때 자동으로 호출됩니다. 클래스에는 생성자 메서드가 있어야 합니다. 정의되지 않은 경우 기본적으로 빈 생성자 메서드가 추가됩니다.

생성자 메서드는 기본적으로 인스턴스 객체를 반환하는데, 이것이 바로 포인트입니다. 하지만 다른 객체를 반환하도록 지정할 수도 있습니다

4. 상속

class ColorPoint extends Point {
    constructor(x, y, color) {
        super(x, y) // 调用父类的 constructor(x, y)
        this.color = color
    }

    toString() {
        return this.color + '' + super.toString() // 调用父类的 toString()
    }
}

확장에 익숙하신가요? React를 사용해 본 분들은 React의 ES6 작성 방법에서 종종 다음과 같이 작성한다는 것을 아실 것입니다.

class XXXXX extends Component{}

ColorPoint는 확장을 통해 상속될 수 있습니다. Point 클래스의 모든 속성과 메서드

super 키워드가 상위 클래스의 인스턴스를 참조하는 생성자와 toString 메서드에 나타나는 것을 보셨나요?

하위 클래스는 생성자 메서드에서 슈퍼 메서드를 호출해야 합니다. 그렇지 않으면 새 인스턴스를 생성할 때 오류가 보고됩니다. 하위 클래스에는 자체 this 객체가 없지만 상위 클래스의 this 객체를 상속하기 때문에 super가 호출되지 않으면 하위 클래스는 this 객체를 가져오지 않습니다.

사실 클래스는 객체 프로토타입을 작성하는 더 간결한 방법입니다

위 내용은 Java에서 클래스란 무엇입니까? 수업 관련 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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