gpt4 book ai didi

oop - 如何在dart中实现继承?

转载 作者:IT王子 更新时间:2023-10-29 06:59:35 26 4
gpt4 key购买 nike

我想要一个继承 Dart 中另一个类的一些属性的类。最好的方法是什么?

这是我的父类:

class Photo {
final String id;
final String owner, server, secret, title;
final int farm, isfamily, ispublic, isfriend;
final String url;

Photo(
{this.id,
this.owner,
this.secret,
this.server,
this.farm,
this.title,
this.ispublic,
this.isfriend,
this.isfamily,
this.url});

factory Photo.fromJson(Map<String, dynamic> parsedJson) {
return new Photo(
id: parsedJson['id'],
owner: parsedJson['owner'],
secret: parsedJson['secret'],
server: parsedJson['server'],
farm: parsedJson['farm'],
title: parsedJson['title'],
ispublic: parsedJson['ispublic'],
isfriend: parsedJson['isfriend'],
isfamily: parsedJson['isfamily'],
url: parsedJson['url_m']);
}
}

这是我要创建的子类:

class gPhoto : Photo //inherits Photo
{
string ownername;
string dateadded;

gPhoto(
{this.ownername,
this.dateadded
});

factory gPhoto.fromJson(Map<String, dynamic> parsedJson) {

return new Photo(
ownername: parsedJson['ownername'],
dateadded: parsedJson['dateadded'']);
}

这行得通吗?照片类的工厂将与我的新类一起使用,还是我必须为 gPhoto 创建一个单独的类才能映射 json?

最佳答案

您需要检查 dart 语法,它与使用 : 继承的 C# 等语言有点不同。

这是你自己做的:

class Photo {
final String id;
final String owner, server, secret, title;
final int farm, isfamily, ispublic, isfriend;
final String url;

Photo(
{this.id,
this.owner,
this.secret,
this.server,
this.farm,
this.title,
this.ispublic,
this.isfriend,
this.isfamily,
this.url});

factory Photo.fromJson(Map<String, dynamic> parsedJson) {
return new Photo(
id: parsedJson['id'],
owner: parsedJson['owner'],
secret: parsedJson['secret'],
server: parsedJson['server'],
farm: parsedJson['farm'],
title: parsedJson['title'],
ispublic: parsedJson['ispublic'],
isfriend: parsedJson['isfriend'],
isfamily: parsedJson['isfamily'],
url: parsedJson['url_m']);
}
}

class gPhoto extends Photo {
final String ownername;
final String dateadded;

gPhoto(
{id,
owner,
secret,
server,
farm,
title,
ispublic,
isfriend,
isfamily,
url,
this.ownername,
this.dateadded})
: super(
id: id,
owner: owner,
secret: secret,
server: server,
farm: farm,
title: title,
ispublic: ispublic,
isfamily: isfamily,
url: url);

factory gPhoto.fromJson(Map<String, dynamic> parsedJson) {
final photo = Photo.fromJson(parsedJson);
final ownername = parsedJson['ownername'];
final dateadded = parsedJson['dateadded'];
return gPhoto(
dateadded: dateadded,
ownername: ownername,
farm: photo.farm,
id: photo.id,
isfamily: photo.isfamily,
isfriend: photo.isfriend,
ispublic: photo.ispublic,
owner: photo.owner,
secret: photo.secret,
server: photo.server,
title: photo.title,
url: photo.url,
);
}
}

关于oop - 如何在dart中实现继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53455929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com