Java关于子类父类的继承问题
一. 继承的定义
在Java中,继承是让一个类获得另一个类的属性和方法。继承的是子类,被继承的被称为父类。
继承的关键字是 extends ,在子类类名后直接使用extends + 父类类名即表示子类继承父类。
此外,Object是默认的父类,不含extends的类其也有默认的父类类名为Object,许多默认的方法在有时会有不小的作用
这里子类创建的对象并没有定义属性和方法,但因为继承父类,所以可以直接调用,没有给属性赋值,所以输出结果为属性空
二. 访问权限的说明
访问权限的说明词有四种,每种都代表不同的权限,
public说明可以在任何情况下调用其定义的属性或方法(公共的);
private说明只能在当前类中调用其定义的属性或方法(私有的);
protected说明其定义的属性或方法在同一个包可以使用,不同包只有子类可以使用(受保护的);
缺省 说明其定义的属性或方法只在同一个包下可以使用(包权限,,缺省表示方法为无说明,例如直接定义String weidao,而不用任何说明)
子类在继承时要注意其权限是否可以访问,例如,我前面的例子中price是private权限
提示报错,这样我们是无法使用private修饰的属性price的
三. 重写和转型
-
重写通俗的说就是当父类的方法不适用子类的要求,子类可以在重写父类定义的方法以满足自己的要求,但是在重写中,要注意方法的返回值类型、方法名、参数必须完全一样,访问权限可以扩大
这里扩大了访问权限重新定义了方法
但是不能缩小访问权限 -
而对于转型来说会有如下几条原则:
子类对象可以自动的变为父类对象;
自动转型后,方法的调用以子类为准。
但是如果父类对象要转化成子类对象有一个先决条件是只有在父类对象是从相应的子类对象自动转型得到的,也就是说,一般的父类对象不可转换成子类对象,必须要是父类对象是从相应的子类对象自动转型得到的!