黑马程序员 继承小结

------- android培训java培训、期待与您交流! --------------------------------

1. 继承的由来 
  在编程中,子类继承父类以后,获得父类的成员,但不是全部的。
    继承怎么来的?
父类是将多个类中的共性抽取出来,目的是提高代码的重用性。


    继承的好处:
    代码少了,write less do more
    继承出现后,类与类之间,产生了关系,正是因为有了这个关系


,导致了面向对象的第三大特征多态
   应用:
  子类父类使用过程中,子类自己有,用自己的,子类没有用父类的


,找爷爷类,实在没有直接编译失败
  
 2. 单继承
   Java语言中,继承只支持单继承
   一个类,只能继承一个类,不能同时继承多个类
   一个类只能拥有一个父类,但是可以拥有多个子类


   但是,虽然不支持多继承,支持多层继承
 
 3. 继承后,子类,父类,成员变量的特点
    super :
super代表父类的内存空间的标识。
是父类对象的引用。
用法,super.的方式,调用父类成员,不是全部


子类和父类成员变量的内存图中
记住:父类的成员变量,会跟随子类对象,进入堆内存,标记一个


super
局部变量,只要方法进栈,就存在!








 4. 继承后,子类父类,成员方法特点,非常重要的环节
       当子类,父类出现了一模一样的方法时,现象称为子类重写父


类的方法
     (重写,叫覆盖,复写 override)
 
 5. 继承和重写方法的案例,重点案例
    要求,设计一个移动电话  ,接,打
  打,拨号
  接,来电显示,显示对方的号码
  
分析具体的事务,只有一个,移动电话,对象,对象中有什么功能
接,打


需求,移动电话,随着技术的革新,接,打,功能发生了变化
打,拨号
接电话:不但有铃声,有号码,大头像,和弦铃声


功能发生了变化,解决办法
 第一个办法,修改原始代码,影响原有手机的使用,最要命的问题
 记住:以后开发中,修改源代码,是一个灾难性的工程
 修改源码,代码是自己写的,别人写的
 
 第二个办法:分析后,发现打电话功能,没有变化,目前只是接发生


了变化
 做一个新的手机出来,沿袭原有的功能,并扩展自己的功能,源代码


,不动!!
 不会动源码,同时,保证原有的移动电话使用不受影响  继承,覆盖


方法
 
      需求,移动电话,技术变了,智能手机,接,打
附加功能接电话:显示号码归属地
//设计一个移动电话  ,接,打
//打,拨号
//接,来电显示,显示对方的号码
class Phone{
public void call(){
System.out.println("拨号,打电话");
}
public void receive(){
System.out.println("显示号码");
System.out.println("接电话");
}
}
// 需求,移动电话,随着技术的革新,接,打,功能发生了变化
// 打,拨号
// 接电话:不但有铃声,有号码,大头像,和弦铃声








class Phone1 extends Phone{
public void call(){
super.call();
}
public void receive(){
super.receive();
System.out.println("显示大头像");
System.out.println("和弦铃声");
}
}
// 其他功能不变,接电话时显示归属地
class Phone2 extends Phone1{
public void call(){
super.call();
}
public void receive(){
super.receive();
System.out.println("显示归属地");
}
}
class PhoneExtends{ 
public static void main(String[] args){
Phone p = new Phone();
p.call();
p.receive();
System.out.println("============================");
Phone p1 = new Phone1();
p1.call();
p1.receive();
System.out.println("============================");
Phone p2 = new Phone2();
p2.call();
p2.receive();
}
}


以上的案例,充分利用了继承,覆盖方法的特点,实现程序的无限扩


展性
以后如果遇到类似开发,首先想到继承,覆盖方法,目前只能改


 6. 继承后构造方法特点
        每一个类,都有自己的构造方法
出现了子类,父类后,构造方法有什么变化


创建子类对象的时候,父类构造方法也运行
 7.子类父类中构造方法的总结 
 A .子类中所有的构造,无论重载几个,每一个的第一行默认super


(),访问父类空参数的构造方法
 B .如果父类,没有空参数的构造方法,子类的构造方法,没有写


super(),直接编译失败
 C .如果父类,有多个重载构造方法,子类的构造方法,只要访问其


中一个即可
 D .子类中,所有的构造方法,不管直接,还是间接,必须访问父类


构造方法


  ASP.Net+Unity开发.Net培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值