У меня есть абстрактный класс A:
abstract class A {
Future<String> firstMethod();
}
И я реализовал этот абстрактный класс:
class Aimp implements A {
@override
Future<String> firstMethod() async {
return "test";
}
}
Я создал еще один абстрактный класс:
abstract class B extends A {
Future<String> secondMethod();
}
И я реализовал этот абстрактный класс:
class Bweb extends B {
@override
Future<Object> secondMethod() async {
final t = //I want to call firstMethod()
if (t.isNotEmpty()) // do sth
}
}
В реализации secondMethod(), как я могу вызвать реализацию firstMethod()?
Я не хочу использовать миксин.
Особой причины нет, я хочу использовать его как java @YeasinSheikh
Попробуйте пост Моиза Раджесерисона
Я думаю, это работает, это смешанный способ
Вряд ли [я бы сказал], это уже унаследовано от A по B with Aimp
Вместо этого я пытаюсь использовать with:
abstract class A {
Future<String> firstMethod();
}
class Aimp implements A {
@override
Future<String> firstMethod() async {
return "test";
}
}
abstract class B with Aimp {
Future<String> secondMethod();
}
class Bweb extends B {
@override
Future<String> secondMethod() async {
final String t = await firstMethod(); //Your firstMethod function
if (t.isNotEmpty) {
return t;
}
return '';
}
}
Тогда вам нужен объект класса Aimp как поле класса Bweb. Или поместите класс A в качестве поля для класса B.
Могу я узнать, почему мне не нравится использовать примеси, уже используя наследование?