里式替换原则
只要是父类出现的地方,都可以用子类替代,且不会出现任何异常。但是反过来则不行,有子类出现的地方,不能用其父类替代
子类继承了父类,拥有了父类和方法,同时还可以定义自己有,而父类没有的方法。这是在继承父类方法的基础上进行功能的扩展,符合里氏替换原则,代码示例:
public class TestA {
public void sum(int i,int j){
System.out.println(i+"i"+j+"j"+"="+(i+j));
}
public static void main(String[] args) {
System.out.println("父类结果:");
TestA a=new TestA();
a.sum(1,2);
//父类存在的地方,可以用子类替代 子类B替代父类A
System.out.println("子类代替父类结果:");
TestB b=new TestB();
b.sum(1,2);
b.newSum();
}
}
class TestB extends TestA{
public void newSum(){
System.out.println("TestB的方法");
}
}
运行结果:

依赖倒置原则
依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,所以我们在实际编程中只要遵循以下4点,就能在项目中满足这个规则:
每个类尽量提供接口或抽象类,或者两者都具备。
变量的声明类型尽量是接口或者是抽象类。
任何类都不应该从具体类派生。
使用继承时尽量遵循里氏替换原则,代码示例:
public interface Shop {
/**
* 购物方法
*/
String sell();
}
class Shop1 implements Shop {
@Override
public String sell() {
return "买吃的";
}
}
class Shop2 implements Shop {
@Override
public String sell() {
return "买穿的";
}
}
class Customer{
void shopping(Shop shop){
System.out.println(shop.sell());
}
}
class TestShop {
public static void main(String[] args) {
Customer customer = new Customer();
System.out.println("购买的商品:");
customer.shopping(new Shop1());
customer.shopping(new Shop2());
}
}

被折叠的 条评论
为什么被折叠?



