이 장에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!