Junior — Middle
Explain the purpose and features of methods that are accessible only within the class, and why they are used.
sobes.tech AI
Answer from AI
Liskov Substitution Principle (LSP) relates to object-oriented programming principles and is closely connected with inheritance. It states that objects of a subclass should be interchangeable with objects of the superclass without violating the correctness of the program.
That is, if class B inherits from class A, then objects of class B should behave so that they can be used in place of objects of class A without unexpected errors or behavior changes.
This helps create class hierarchies where subclasses extend the functionality of base classes without breaking their contract.
Example:
class Bird {
void fly() {
print('Bird is flying');
}
}
class Sparrow extends Bird {
@override
void fly() {
print('Sparrow is flying');
}
}
// Violation of LSP if subclass cannot fly
class Ostrich extends Bird {
@override
void fly() {
throw Exception('Ostrich cannot fly');
}
}
Here, Ostrich violates the Liskov principle because it cannot replace Bird without changing behavior.