继承和接口的设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a990924291/article/details/50680446

  学习了一门的语言的时候,一开始总是这侧重功能的实现。很少去关注优化设计,底层设计和架构设计,我想,这是也“码农”的缺陷吧。一开始的时候,肯定有学习过继承和接口的区别吧,但是实际使用者却很少去关注这两者的区别。编程久了,越来越觉得这两者的使用真的很讲究。

  首先说下继承,我把继承分为2种,常用继承和抽象类继承。

概念与区别:

 使用上的区别:一个类只能继承一个父类,但是可以实现多个接口。原因:父类相当于子类的基础属性和方法。而接口则是功能性的。


  常用继承:就是普通的父类,子类继承。子类拥有父类的所以属性和方法,也可以重写父类的属性和方法(final修饰的无法重写),所有被重写的父类方法和父类属性在子类也是存在。但是子类不能访问到父类的private的属性。既然不能访问,为什么还要继承他呢?根据我的实际使用,我想这在类的向上转型的时候用的到。

eg:      

 Father father=new Son();
father.setId(5);
System.out.println(father.getId());

   在这个例子中Father。包含的一个private属性的id。但是实际调用中,father却是Son对象,要是Son对象内没有继承private属性,father指向Son对象(向上转型)就无法实现。毕竟声明的时候不会实现化对象。对象只有一个,却要当成2个用,所以,Son必须隐式继承Father的私有成员。当调用被重写的方法时,只能调用到子类重写后,子类对象只能调用到子类重写后的,要使用隐藏的父类方法或者变量,可以使用super.成员名。


 抽象类继承:

    设计一个抽象类。与常用继承的区别就是,抽象类的方法至少有一个抽象的,没有方法体(也就是没有{})。子类继承的时候必须实现抽象方法。


接口:只有抽象方法,使用时必须实现所有的抽象方法。


使用:

   继承:如果有共同的属性和共同的方法。.......................................................................................................................................常用继承

               如果有共同的属性,0-n的共同方法,1-n的相同性质方法,但是有多种不同的实现方式。.......................................抽象类继承

    接口:如果我们要实现一系列功能,但是实现方式可能存在多种。 .........................................................................................接口

就是继承与接口主要是看需不需要设置属性。继承是一系列相关类的共同集合,而且接口设计我认为是一系列相关方法的集合。有时候在开发过程中,为了同步开发,可以先定义好接口,这样就方便了其他人员。

   

猜你喜欢

转载自blog.csdn.net/a990924291/article/details/50680446