1.子类能继承父类的构造方法吗?
不能。
构造方法可以用来构造一个类的实例。不像属性和方法,父类的构造方法是不能被子类继承的。它们只能从子类的构造方法中用关键字super调用。
2.什么是多态
首先定义两个有用的术语:子类型和父类型。
一个类实际上定义了一种类型。
子类定义的类型称为子类型,而父类定义的类型称为父类型。
子类是它的父类的特殊化,每个子类的实例都是其父类的实例,但反过来就不成立。
使用父类对象的地方都可以使用子类的对象。用简单的术语来描述,多态就意味着父类型的变量可以引用子类型的对象。
3.继承
子类并不是父类的一个子集,一个子类通常比它的父类包含更多的信息和方法。
父类中的私有数据域在该类之外不可访问。
不要仅仅为了重用方法这个原因而盲目地扩展一个类,一个父类和它的子类之间必须存在是关系。
多继承可以通过接口来实现。
4.接口中可以声明变量么
不能。
不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统一的属性。要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展开放,接口是对开闭原则的一种体现。
5.什么是动态绑定
介绍两个术语:声明类型和实际类型。
一个变量必须被声明为某种类型。变量的这个类型称它为声明类型。
一个引用类型变量可以是一个null或者是一个对声明类型实例的引用。
实例可以使用声明类型或它的子类型的构造方法创建。
变量的实际类型是被变量引用的对象的实际类。
Object o = new DecorView();
o.toString();
o调用的到底是哪个toString()方法是由o的实际类型决定的,这称为动态绑定。
6.静态方法能被覆盖么
不能。
与实例方法一样,静态方法可以被继承。但是静态方法不能被覆盖。如果父类中定义的静态方法在子类中被重新定义,那么定义在父类中的静态方法将被隐藏。可以使用语法:父类名.静态方法名调用隐藏的静态方法。