黑马程序员---代码块,继承。第九天学习笔记

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

1.      第八天回顾,构造方法(熟练写)和类名一样的方法,成员变量赋值,名字和类名一致,不要写返回值,别写return. 重载形式的构造方法,提供空参数,提供全部赋值的方法。

this关键字,区别成员和局部重名,本类对象的引用。语句效果,构造方法之间调用。静态,共享的数据,属于类,类名.静态成员。静态优先于非静态进内存,静态不能直接使用非静态。

 

2.      第九天学习内容:代码块(局部,构造,静态)。面向对象第二个特性,继承,好处由来。

子父类关系,子类和父类成员之间的变化(变量,方法,构造),final修饰符,多态,生活中的,程序中的

 

3.      代码块

  局部代码块 :  写在方法中,限制变量的生命周期,罕见

  构造代码块 :   写在类中,每次new对象,运行一次,优先构造方法

  静态代码块 :   写在类中,加上static, 类进内存,就运行一次,仅仅一次

  加载顺序,加载自己的静态成员,顺序,非静态成员

 

4.      继承的由来和好处

  程序中,有多个类,相同的成员方法,和成员变量,相同内容提取形成另一个类,这个类中有的内容,多个类都具备.

  父类:子类的共性提取形成父类

  好处: 代码减少,继承的出现,使类与类之间产生了关系,正式这个关系导致了面向对象的第三个特征多态!

  子类,可以直接使用父类的成员了,不是全部

 

5.      extends关键字

  继承  extend(扩展,延伸)

  语法: class 类 extends 类(必须一个类的名字)

  class A extends B{}

  class B {}

 

6.      java中的继承特点

  单继承,不是多继承,一个类,只能继承一个类,不能同时继承多个类

  一个孩子,只能有一个父亲。一个父亲,可以有多个孩子。

  为什么不能多继承?存在安全隐患,Java直接砍掉多继承。

  虽然只支持单继承,但是Java支持多层继承,多重继承。

  顶层类中有的成员,底层类也具备

  

7.      继承体系

  很多子类,抽取形成父类,形成了一个继承体系

  学习继承体系的时候,学习顶层类,建立底层类的对象

  顶层最共性功能,底层最多功能。

   什么时候该继承,什么时候不该继承

   当你分析事物的时候,发现这个事物,是另一个事物的一种,使用继承(is a)

   饮料,液体,引用,解渴

     雪碧 可以继承饮料,具备了饮料中的全部功能

     酱油 具备液体,引用,不能解渴,不能继承饮料

 

8.      继承后,子类父类中成员变量的特点

   方法自己有,使用自己的,就近访问

   方法没有,使用自己类的成员

   自己类没有,找父类成员

   子类有,找自己,子类没有找父类,都没有编译失败

   super关键字,不是父类对象的引用,表示的是父类的存储空间

   用来访问父类的成员

   内存图:super父类的存储位置,父类的所有成员变量,跟随子类对象进入堆内存

 

   成员变量是静态,类名调用的!!

 

9.      继承后,子类父类成员员方法的特点

   子类,和父类中,出现了一模一样的方法,子类重写(override)父类方法

   复写,覆盖,重写

   保证,子类方法的权限,必须大于或者等于父类方法权限

   如何判断,是否重写,是否可以编译通过

l  静态

l  参数,重载

l  返回值,和权限

    extends如何实现程序的扩展性,使用继承和方法的重写,实现程序的无限扩展性。

    移动电话,接,打。移动电话是一个对象,使用类进行对象描述,两个功能,就两个方法,打电话,拨号,接电话,来电显示,响铃.

    n年之后,技术更新,铃声,来电显示,大头像

    n年之后,智能手机,铃声,来电显示,大头像,归属地,定位

    结论:扩展一功能,源码风险!!  重写原有方法,实现扩展

 

10.  继承后,子类父类中构造方法的特点

  子类所有构造方法,第一行super(),默认访问父类空参数构造

  保证子类中的所有构造方法,访问到父类构造方法

  如果,父类中没有空参数构造方法,子类构造方法,没写super,编译失败

 

  this()  super() 不能同时出现在同一个构造方法中,选择其一是可以的

  写了this(),默认的super()没有了

  无论第一行是this还是super,保证每个子类构造方法,直接还是间接都会访问到父类构造方法,就可以

 

11.  final关键字

  修饰符,很特殊的修饰符

  修饰类,修饰成员,修饰局部

 

  final修饰局部变量,局部变量的值,终身固定,不能更改

  final修饰类  final class 变成了最终类,不能被子类继承--太监类 (String)

  final修饰成员方法,最终方法,不能被子类重写

  final修饰成员变量:固定的不是默认值

    构造方法,可以赋值变量,普通方法不行。构造方法是建立对象的过程,普通方法是对象已经建立完成了

  一般情况,成员变量定义成final都是直接赋值完成。变量值是终身固定不变,其实就是一个常量了,变量名要求全部大写

 

12.  面向对象第三大特征多态

  多态:一个事物具备的多种形态

  我,商城,顾客

  我,医院,患者

  我,上班,员工

  我,回家,奴隶

  程序: 父类或者接口的引用指向自己的子类对象

     父类 变量 = new 子类();

     变量.方法(); 运行的必须是子类重写的,如果子类没有,执行父类

     程序中,为什么要运行子类重写后的方法呢?

     第一个,程序的扩展性,子类可以无限扩展

     第二个,父类中的方法,有可能不能运行

 

13.   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值