Java基础知识&面试题总结
封装、继承、多态
Java基础知识&面试题总结 封装、继承、多态封装就是信息隐藏,利用抽象数据类型将数据和基于数据的 *** 作封装在一起,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口。用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。
优点:
1、良好的封装能够减少耦合。
2、类内部的结构可以自由修改。
3、可以对成员进行更精确的控制。
4、隐藏信息,实现细节。
public class Husband { private String name ; private String sex ; private int age ; private Wife wife; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setWife(Wife wife) { this.wife = wife; } }
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。对于若干个相同或者相识的类,我们可以抽象出他们共有的行为或者属相并将其定义成一个父类或者超类,然后用这些类继承该父类,他们不仅可以拥有父类的属性、方法还可以定义自己独有的属性或者方法。
主要有以下规则:
1、子类拥有父类非private的属性和方法。
2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。
4、向上转型,可以将子类转换成父类。
5、子类不能继承父类的构造器,可以通过super来调用。编译器可以默认给子类调用父类的构造器(父类有默认构造器,否则需要通过调用来定义子类的构造器)。
6、对于protected而言,它指明就类用户而言,他是private,但是对于任何继承与此类的子类而言或者其他任何位于同一个包的类而言,他却是可以访问的。
继承的缺陷:
1、父类变,子类就必须变。
2、继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。
3、继承是一种强耦合关系。
多态指一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
Java实现多态有三个必要条件:继承、重写、向上转型。
当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。
1、基于继承实现的多态(class extends)
继承父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。
如果父类是抽象类,那么子类必须要实现父类中所有的抽象方法,这样该父类所有的子类一定存在统一的对外接口,但其内部的具体实现可以各异。
2、基于接口实现的多态(Interface implements)
在接口的多态中,指向接口的引用必须是指定这实现了该接口的一个类的实例程序,在运行时,根据对象引用的实际类型来执行对应的方法。
子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。
注: 继承都是单继承,只能为一组相关的类提供一致的服务接口。但是接口可以是多继承多实现,能够对外提供一致的服务接口,具有更高的灵活性。
参考资料:https://blog.csdn.net/jianyuerensheng/article/details/51602015
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)