------<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.