aprendizaje de idiomas dardo 06
Autor: ScorpioDong
1. Clase
Dart es un lenguaje orientado a objetos. Es compatible con la programación orientada a objetos, tales como clases, interfaces y similares. aspectos OOP de la clase es para crear un modelo para un objeto / plantilla. Clase encapsula el objeto de datos. Dardo proporciona soporte integrado para el concepto de clase.
1.1 Exposición de la clase
- Use
class
palabras clave para declarar una clase en el Dart. - definición de la clase de palabras clave
class
al principio, seguido por el nombre de la clase. - nombre de la clase recomienda el uso de una gran joroba de nomenclatura.
- Nombre de la clase seguido por el cuerpo de la clase envuelta en un par de llaves.
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
Test() {
this.name = "张三";
}
// Functions
void eat() {
print("$name eatting...");
}
}
cuerpo campos de clase, captadores y definidores, constructores y funciones son opcionales, la demanda definido
- Los campos (campos) - campo de cualquier variable declarada en la clase, campo representa los datos relacionados con el objeto.
- setters y getters - permiten que el valor de inicialización del campo y recuperar la clase, el captador por defecto / definidor asociado con cada clase. Sin embargo, los valores por defecto puede cambiarse mediante la definición explícita setter / getter.
- Constructores (constructores) - responsable de asignar memoria para la clase de objeto.
- De función (funciones) - función de la diana operación se pueden tomar, que a veces también se denominan métodos.
Ejemplos de atributos de función y de acceso de clase 1.2
Use new
se crea ejemplos de palabra clave seguida por el nombre de la clase de la clase.
main() {
var obj = new Test();
print(obj.name);
obj.eat();
}
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
Test() {
this.name = "张三";
}
// Functions
void eat() {
print("$name eatting...");
}
}
Propiedades y métodos de una instancia de objeto de la clase visitada por una clase. Use .
puntos para acceder a los miembros de datos acumulados.
1.3 Constructor
- Un constructor es una clase especial de funciones, es responsable de la clase variable de inicialización.
- Dardo constructor es la misma función que el nombre de la clase.
- El parámetro constructor puede estar presente. Constructor no devuelve ningún valor.
- Si no es un constructor, Dardo un constructor vacío por defecto sin argumentos.
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
Test() { // <--构造函数,初始化了name变量
this.name = "张三";
}
// Functions
void eat() {
print("$name eatting...");
}
}
Dardo nombrado constructor proporcionado, por lo que la clase puede definir varios constructores.
gramática类名.构造方法名(形参列表) {函数体}
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
// 构造函数,初始化了name变量
Test() {
this.name = "张三";
}
// 命名构造函数
Test.nameTest(String name) {
this.name = name;
}
// Functions
void eat() {
print("$name eatting...");
}
}
1.4 esta palabra clave
esta palabra clave se refiere a la instancia actual de la clase. En este caso, el nombre del parámetro y el campo de nombre de la clase es el mismo. Por lo tanto, con el fin de evitar la ambigüedad, la clase del campo con este prefijo de palabras clave.
class Test {
// Fields
String name;
// Getters and Setters
// Constructors
// 构造函数,初始化了name变量
Test() {
this.name = "张三"; // this关键字的使用
}
// 命名构造函数
Test.nameTest(String name) {
// this关键字的使用,因为字段名和形参名一样,冲突
this.name = name;
}
// Functions
void eat() {
print("$name eatting...");
}
}
1,5 Getter y Setter
Getters y setter (también llamada una unidad de acceso y cambio) permite que el programa inicializa el valor de cada clase y recuperar el campo. Use palabras clave get define captador o de acceso. Incubadora o de acceso se define mediante el conjunto de palabras clave.
El captador por defecto / definidor asociado con cada clase. Sin embargo, los valores por defecto puede cambiarse mediante la definición explícita setter / getter. getter no tiene parámetros y devuelve un valor, organismo sólo un parámetro, pero no devuelve un valor.
main(List<String> args) {
var a = new Test();
a.test_name = "李四";
print(a.test_name);
}
class Test {
// Fields
String name;
// Getters and Setters
// 定义name 的 Getter
String get test_name {
return name;
}
// 定义name 的 Setter
void set test_name(String name) {
this.name = name;
}
// Constructors
// 构造函数,初始化了name变量
Test() {
this.name = "张三"; // this关键字的使用
}
// 命名构造函数
Test.nameTest(String name) {
// this关键字的使用,因为字段名和形参名一样,冲突
this.name = name;
}
// Functions
void eat() {
print("$name eatting...");
}
}
1.6 paquete
- Dardo no es privado, público y modificador de otros derechos.
- Puede utilizar
_
un guión de identificadores de prefijo marcados como privados.
class Test {
// Fields
String _name; //标记私有外部无法访问
// Getters and Setters
// 定义name 的 Getter
String get test_name {
return _name;
}
// 定义name 的 Setter
void set test_name(String name) {
this._name = name;
}
// Constructors
// 构造函数,初始化了name变量
Test() {
this._name = "张三"; // this关键字的使用
}
// 命名构造函数
Test.nameTest(String name) {
// this关键字的使用,因为字段名和形参名一样,冲突
this._name = name;
}
// Functions
void eat() {
print("$_name eatting...");
}
}
1.7 Herencia
- DART es compatible con el concepto de herencia, es la capacidad del programa para crear una nueva clase de una clase existente. Extendido para crear una nueva clase llamada clase no sea el padre / superclase. La clase llamada niño / subclase de nueva creación.
- Una clase usando
extends
la palabra clave heredado de otra clase. hereda de subclases de todas las propiedades y métodos que no sean el constructor de la clase padre. - soportes de clase de dardos único sencillo modelo de herencia, que es una clase puede tener un solo progenitor.
main(List<String> args) {
var obj = new B();
print(obj.a);
}
class A {
int a = 5;
}
class B extends A {
}
ejecución
5
anulaciones método
- mecanismo de subclases de anulación es un método para redefinir métodos de su clase padre.
- override Método
@override
bandera. - Método sustituir la clase de los padres y el nombre de método del método, la lista de parámetros y el tipo de retorno sean coherentes.
main(List<String> args) {
var obj = new B();
obj.F();
}
class A {
int a = 5;
F() {
print("123");
}
}
class B extends A {
@override
F() {
print("456");
}
}
ejecución
456