java中的继承(子类调用父类构造方法还不懂).doc

上传人:s9****2 文档编号:558113142 上传时间:2023-07-29 格式:DOC 页数:6 大小:42KB
返回 下载 相关 举报
java中的继承(子类调用父类构造方法还不懂).doc_第1页
第1页 / 共6页
java中的继承(子类调用父类构造方法还不懂).doc_第2页
第2页 / 共6页
java中的继承(子类调用父类构造方法还不懂).doc_第3页
第3页 / 共6页
java中的继承(子类调用父类构造方法还不懂).doc_第4页
第4页 / 共6页
java中的继承(子类调用父类构造方法还不懂).doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《java中的继承(子类调用父类构造方法还不懂).doc》由会员分享,可在线阅读,更多相关《java中的继承(子类调用父类构造方法还不懂).doc(6页珍藏版)》请在金锄头文库上搜索。

1、declarations n. 声明extends v. 继承 继承中注意的问题:1 重写(也叫覆盖,也叫重构):重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型; 重写方法不能使用比被重写方法更严格的访问权限。重写是类与类之间的关系,两者必须是继承关系。重载是方法与方法之间的关系。2 关键字super: 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 super的追溯不仅于直接父类,就是father的father。Supper关键字有两个特殊的用途

2、: 在子类构造函数中调用父类的构造函数 在子类中调用父类的方法。3 多态:多态就是重写和重载!而上塑造型或虚方法的调用更好的体现了多态。 上溯造型(也叫虚方法)中,方法是调用子类自己的,属性是调用父类的。(一个引用类型变量如果声明为父类的类型, 但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法)public class Father public String name = 王惠; public void bidBoy() System.out.println(今天我要是不打你,我就不是你娘!); public class Son1 extends Father publi

3、c String name1 = 王鹏的姐姐; public String name = 张三三; public void bidBoy() /重写 System.out.println(我做错了什么?为什么你要打我!); System.out.println(super.name); System.out.println(name);/如果子类没有name,那么这个name就输出父类的。 public class Test public static void main(String args) Father f = new Son1(); /上溯造型,虚方法调用 f.bidBoy();/这

4、里调用的是子类中重写父类的方法!上溯造型中,方法是调用子类自己的,属性是调用父类的。 System.out.println(f.name); 输出结果: 我做错了什么?为什么你要打我! 王惠 张三三 王惠同类收集( homogenous collections) MyDate m = new MyDate2; m0 = new MyDate(22, 12, 1964); m1 = new MyDate(22, 7, 1964); 异类收集(heterogeneous collections) Person p= new Person3; p0 = new Student();/跟person有

5、继承关系 p1 = new Person(); p2 = new Graduate();/跟person有继承关系方法声明的参数类型为父类类型,可以使用子类的对象作为实参调用该方法public class Test public void method(Person e) / e.getInfo(); public static void main(String args) Test t = new Test(); Student m = new Student(); t.method(m); 4 instanceof 操作符:instanceof操作符的作用是判断一个变量是否是右操作数指出的

6、类的一个对象, 由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况 下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数是 右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给 一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。5 对象造型 : 对Java对象的强制类型转换称为造型 在造型前可以使用instanceof操作符测试一个对象的类型 从子类到父类的类型转换可以自动进行 从父类到子类的类型转换必须通过造型(强制类型转换)实现 无继承关系的引用类型间的转换是非法的

7、public class Test public void method(Person e) System.out.println(e.getschool(); /非法,因为从子类到父类的类型转换可以自动进行,故这里已经是父类了。父类的对象只能调用父类中有的方法。 if(e intstanceof Student) Student me = (Student)e; System.out.println(me.getschool(); public static void main(Stirng args) Test t = new Test(); Student m = new Student

8、(); t.method(m); 综合例子:public class Animal public String name; public void run() System.out.println(交通基本靠跑); public void say() System.out.println(通讯基本靠叫); public class Cat extends Animal /* * 如果存在继承关系的话,子类会默认的调用父类的默认构造器,而如果重载父类的构造器, * 子类需要调用重载之后的构造器,且父类的构造器必须在子类的最开始最前端进行调用。 * */ public Cat() super();

9、 public void worke() System.out.println(猫挠沙发.咔咔.); public void say() System.out.println(喵喵.); public class Dog extends Animal public void worke() System.out.println(狗看门儿!); public void say() System.out.println(汪汪汪.); public class AnimalFactory public static void method(Animal animal) /循环,遍历出Animal数组

10、当中所有的对象并调用CatDog当中的workesay方法及Animal当中的run/say方法。 for(Animal a:animal) if(a instanceof Dog) Dog d = (Dog)a; d.worke(); d.say(); continue; if(a instanceof Cat) Cat c = (Cat)a; c.worke(); c.say(); continue; if(a instanceof Animal) continue;/这个continue可以省掉 public class TestAnimal public static void mai

11、n(String args) Animal a = new Animal3; /异类收集 a0 = new Dog(); a1 = new Cat(); a2 = new Animal(); (Cat)a1).worke();/强制类型转换,因为worke()这个不是子类重写父类的方法,所以必须强制类型转换 a1.say();/这句不需要强制类型转换,因为say()是子类重写父类的方法。 AnimalFactory.method(a);/method方法是静态的,可以直接调用,当然写上面那条语句也没有错。 输出结果: 猫挠沙发.咔咔. 喵喵. 狗看门儿! 汪汪汪. 猫挠沙发.咔咔. 喵喵.6 方法重载:在同一个类中可以定义多个同名方法。 重载方法的参数列表必须不同,也就是参数个数或参数类型不同! 重载方法的返回值类型可以相同,也可以不同构造方法重载: 构造方法重载,参数列表必须不同,也就是参数个数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号