子类是由继承得到的类,被继承的类就是父类,子类与父类是"is-a"关系。
class 子类名 extends 父类名 {...}
子类继承了父类的所有属性和除了构造方法的其余方法。
所有类的祖先类是object类(java.lang.object)。
父类可有0或多个子类,子类只能有一个父类。
obj instanceof class; // 若obj是class的子类, 返回true, 否则返回false
当子类中新声明的变量与父类的成员变量同名时,子类中继承的变量被隐藏,若想使用,可通过继承的方法调用。
当子类中新声明的方法与父类的方法同名时,为方法重写,表示实现与父类不同的行为,但方法名相同。
方法重写时,方法名、返回值类型、参数列表都必须相同,访问权限可升不可降,并且重写的方法不能操作隐藏的成员。
子类对象的用法与普通类的对象相同。
子类对象不能操作隐藏的成员,可通过继承的方法访问。
由父类people扩展的子类chinese,将子类创建的对象lina的引用值赋给父类创建的对象person,person即为对象的上转型对象。
class people {...} class chinese extends people {...} class e { public static void main(string args[]) { chinese lina = new chinese(); people person = lina; // people person = new chinese(); // 以上两句类似此句 } }
在上面代码的基础上,以下一语句是错误的。因为可以说chinses类是people类,但不能说people类是chinses类(如老虎是动物[✔],动物是老虎[✘])。
chinese lisa = new people(); // 此句错误
(1)上转型对象不存在子类新增的变量或方法,只有继承的、隐藏的变量和继承的、重写的方法。
(2)若子类重写了方法,则上转型对象调用的是重写的方法。
(3)当子类重写的方法是静态方法时,上转型对象调用的是父类的静态方法。
(4)可将上转型对象强制转化为子类对象,此时该对象具备子类新增的属性和行为。
如对本文有疑问, 点击进行留言回复!!
springmvc之ResponseBody响应json数据遇到的错误及解决
uni-app 后台升级 静默升级 uniapp 后台更新 静默更新 在线升级
SpringBoot多Module启动报错Could not transfer metadata
Hibernate项目报错:Cannot call sendError() after the response has been committed
网友评论