java继承

 

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

1、  什么是继承

       在程序中,可以使用extends关键字让一个类继承另一个类

       继承的类为子类,被继承的类为父类

       子类会自动继承父类所有的方法和属性

2、  为什么要使用继承

       1> 一个类的功能不行,方法不够用时,就可以增加子类和方法

       2> 需要定义一个能实现某项特殊功能的类时,就可以继承

       3> 提高代码的复用性

3、  继承的特点

       Java只是支持单继承,不支持多继承,但是可以多重继承

       不能多继承的原因:如果一个类继承多个类,多个类中有相同的方法,子类就不知道调用那个类中的方法

4、  向上转型

       子类对象可以当做父类对象使用,因为父类有的功能子类都有

       父类不能当做子类对象,因为子类有的父类不一定有

       可以定义一个父类类型的变量来记住子类的对象,这在程序中成为向上转型

5、  强制类型转换

       把一个子类当做父类来用的时候,不能调用子类的特有方法

              原因:编译器在编译时会做语法检查,看到变量时父类类型那么就会到父类中查找是否有反方法,没有则报错,这样就需要强制类型转换,将父类类型强转成子类类型

       以(子类名)变量名的形式强制类型转换

       注意:强制类型转换时,无论类型是否匹配编译都不会报错,但是类型不匹配运行时会报错,可以使用instanseof进行判断,

6、  子类覆盖父类方法

       覆盖方法是必须和被覆盖方法具有相同的方法名称、参数列表、和返回值类型

              :子类的方法返回值类型可以使父类的方法返回值类型的子类

       如果在子类中想调用父类中的那个被覆盖的方法,可以使用”supei.方法名的格式调用

              :调用方法是,是在子类中先查找,如果子类有会调用总类的,使用supei形式只在父类中查找,子类有没有都是不调用的

       覆盖方法是,不能使用比父类中被覆盖的方法权限更小

              :可能将子类对象当做父类对象使用,那么能获得的父类对象中的方法在子类中必须都能获取到

       覆盖方法是,不能比父类抛出更多的异常

              :子类只能比弗雷强,不能比父类弱

 

小知识:重载(Overload)和重写(Override)的区别

       重载时方法名相同,参数列表不同,和返回值类型无关

       重写时方法名、参数列表、返回值类型全部相同

7、  继承的应用细节

       子类不继承父类私有成员

              :父类中私有成员对外不可见,子类对象中无法访问这些成员

       构造函数不能被继承

              :构造函数通常用来初始化类的成员变量,父类和子类的成员变量不同,初始化方式不同,构造函数的名字也不同

8、  子类对象实例化过程

       子类构造函数中可以使用supeir关键字调用父类构造函数,

       在子类创建对象时一定会调用父类构造函数,即使没有娴熟调用,也会默认调用父类无参构造函数

       在子类中第一行用this关键字去调其他的构造方法,这时系统将不再自动调父类的。但其他构造函数中会调用父类构造函数。

       在构造方法中thissuper关键字只能出现一次,而且必须是第一个语句。

9、子类当做父类使用时注意

       在调用某个类的一个方法时,此方法声明需要一个父类对象,这时我们可以将一个子类对象作为实参传递过去,注意此时方法定义的形参为父类,在方法中使用父类变量调用方法时,其实是调用子类的方法

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值