学校网站开发实际意义,网站维护具体工作内容,模板之家html,牡丹江市西安区建设局网站一、继承的作用子类继承父类的属性和方法#xff0c;实现代码的复用#xff1b;子类扩充自己的标准#xff0c;实现精细化的类型定义。二、子类构造方法的限制子类在实例化的时候#xff0c;默认先实例化父类对象#xff0c;然后再实例化本类对象#xff1b;子类构造方法…一、继承的作用子类继承父类的属性和方法实现代码的复用子类扩充自己的标准实现精细化的类型定义。二、子类构造方法的限制子类在实例化的时候默认先实例化父类对象然后再实例化本类对象子类构造方法默认调用父类的无参构造方法如果父类没有无参构造方法子类的构造方法需要明确指定调用的父类构造方法。三、方法的重写子类重写方法限制方法名、参数类型、参数个数必须和父类方法完全一致被子类重写的方法不能拥有比父类更为严格的访问控制权限(如父类方法为public则子类重写方法也必须为public如父类方法为protected则子类重写方法只能为public或protected);重写方法的返回值类型可以是父类原方法的返回类型的子类(比如父类方法返回Object子类重写方法可以返回String)(但是建议不要修改方法的返回值类型)四、final关键字的约束限制使用final修饰的类不能被继承使用final修饰的方法不能被子类重写(为保护父类关键代码不被子类修改)public static final修饰的属性属于全局常量全局常量在内存中存储在公共区final修饰的属性一般使用全大写单词间可通过下划线区分final修饰的属性在定义时必须设置初始值而且值赋值后不能再被改变。五、多态性的两种描述形式1、方法的多态性方法的重载同一个类中相同方法名称根据传入参数类型、参数个数不同来实现不同的逻辑处理方法的重写继承关系中子类重写父类的方法根据子类的不同实现不同的逻辑处理2、对象的多态性向上转型(自动完成)父类 父类对象 子类实例向下转型(强制完成)子类 子类对象 (子类)父类实例六、分析向上转型、向下转型1、对于对象的转型给出以下的经验总结80%的情况下只会使用向上转型。因为可以得到参数类型的统一方便进行传参和数据处理5%的情况下会使用向下转型。目的是向下转型后调用子类的特殊方法15的情况下不实用转型直接使用本类对象进行操作。个性化的操作在一个标准的开发之中应该尽量少出现因为对象的转型操作里面毕竟有了强制问题容易带来安全隐患。2、向上转型的目的可以得到参数类型的统一方便进行传参和数据处理packagecom.study.override;/*** 父类水果类*/public classFruit {publicString getInfo(){return Fruit *************;}}/*** 苹果类*/class Apple extendsFruit{OverridepublicString getInfo() {return Apple *************;}}/*** 橘子类*/class Orange extendsFruit{OverridepublicString getInfo() {return Orange *************;}}classTest3{public static voidmain(String[] args) {Fruit f1 newApple();Fruit f2 newOrange();getFruit(f1); //Apple *************getFruit(f2); //Orange *************}/*** 接受统一的参数类型Fruit* param fruit*/public static voidgetFruit(Fruit fruit){System.out.println(fruit.getInfo());;}}3、向下转型的目的调用子类的特殊方法只有对象发生了向上转型之后才能成功的向下转型packagecom.study.override;/*** 父类水果类*/public classFruit {public voidgetInfo(){System.out.println(Fruit *************);}}/*** 子类苹果类*/class Apple extendsFruit{Overridepublic voidgetInfo() {System.out.println(Apple *************);}}/*** 子类橘子类*/class Orange extendsFruit{}classTest3{public static voidmain(String[] args) {Fruit f1 new Apple(); // 自动进行了向上转型System.out.println(f1 instanceof Fruit); // trueSystem.out.println(f1 instanceof Apple); // trueSystem.out.println(f1 instanceof Orange); // false//向下转型Apple a1 (Apple)f1;a1.getInfo(); //Apple *************Fruit f2 newFruit();System.out.println(f2 instanceof Fruit); // trueSystem.out.println(f2 instanceof Apple); // falseSystem.out.println(f2 instanceof Orange); // false//向下转型失败//java.lang.ClassCastException: com.study.override.Fruit cannot be cast to com.study.override.AppleApple a2 (Apple)f2;a2.getInfo();}}