类的继承的总结
第一次开通博客,以后就把这里当成心灵家园吧。所以从发这个博文开始,记录以后的学习情况。
我们使用类的继承通常有两个方面的作用:(1)、提高代码的重用性;(2)、提高程序的扩展性。
1、 类的继承格式是怎样的?
java继承的关键字是: extends。
public class 类名 (子类,派生类)extends 类名(父类,基类){
}
2、另外注意是java中类的继承是单继承,即java 不能多继承。只能单继承,但是可实现多接口。
例如:
class A extends B implements C,D,E
{
}
A继承类B,实现接口C,D,E,B位置只能有一个类,CDE可以有多个。实在不能理解就这么理解:你有几个亲爹。。
子类继承到了父类的那些属性和方法
子类继承到了父类所有的属性和方法。
3、能调用的属性和方法:
访问修饰符 同类 不同类 不同包 不同包但是有继承关系
private 可以 不可以 不可以 不可以
默认 可以 可以 不可以 不可以
protected 可以 可以 不可以 可以
public 可以 可以 可以 可以
子类能不能自己定义属性和方法?
可以的
4、方法重写
方法重写的条件:
(1).必须要存在继承关系
(2).子类重写方法时,方法的返回值类型,方法名,参数个数,参数类型,参数顺序必须要和父类的完全一致
(3).子类重写方法的访问修饰符可以大于或者等于父类方法的访问修饰符。
如何调用呢?
你实例化的对象(new关键字后边的构造方法是子类的还是父类的)如果是子类的,那么优先调用子类的方法,如果子类中没有该方法
则调用父类的方法,如果创建对象不是子类的则执行父类的方法
5、自动转型
要实现自动转型必须要存在继承关系。
自动转型格式一:
父类名 对象名 = new 子类构造方法(参数值,...);
Student un = new UNStudent();
自动转型格式二:
public void test(父类名 对象名){
//代码
}
父类名 对象名A = new 子类构造方法(参数值,...);
子类名 对象名B = new 子类构造方法(参数值,...);
test(对象名B);
test(对象名A);
子类类型转成父类类型后不能调用子类特有的方法
将父类类型转化的对象强制转成子类类型,我们就可以调用子类中特有的方法了。
6、多态
多态是由类、对象、方法重载、继承、重写、自动转型技术的组合。
多态是由于继承和重写机制,相同类型的对象调用相同的方法,得到的结果可能不一样。
简述java中的多态?
"多态"一词按照字面意思来理解为"多种形式,多种状态"。它的本质是,发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。
public class polymorphismTest { public static void main(String[] args) { Man asiaMan = new AsiaMan();// 创建一个亚洲人,转化成Man类型 Man euroMan = new EuroMan();// 创建一个亚洲人,转化成Man类型 System.out.println("Asia men eyes' color is " + asiaMan.getEyesColor()); System.out.println("Euro men eyes' color is " + euroMan.getEyesColor()); } public static class Man { int eyes = 2;// 眼睛数量为2 String getEyesColor() {// 返回人眼睛颜色 return null; } } public static class AsiaMan extends Man {// 亚洲人 String getEyesColor() {// 覆盖返回人眼睛的颜色的方法,为黑色 return "black"; } } public static class EuroMan extends Man {// 欧洲人 String getEyesColor() {// 覆盖返回人眼睛的颜色的方法,为蓝色 return "blue"; } } }