面向对象总结-03-----黑马程序员
来源:互联网 发布:2018年要上映的网络剧 编辑:程序博客网 时间:2024/06/07 14:02
<面向对象总结-03>
(继承的含义及使用方法)
1. java中的继承的好处
* 代码减少
* 继承的出现,使类与类之间,产生的了关系,正是因为这个关系的存在
就导致了面向对象的第三个特征,多态
2. java中,只支持单继承,类与类之间,不支持多继承
* 一个类,只能继承一个类
* 支持多层继承,多重继承
3. 什么时候使用继承呢
* 当你发现,一个事物,属于另一个事物中的一种
可以使用继承关系
* 继承一个事物的时候,发现这个事物中的功能,都应该具备,继承有效
* 继承一个事物的时候,发现这个事物中的功能,一部分具有,继承无效
* 实例
咖啡,酱油
共性:流动性,黑色
特性:饮料,调味品
饮料体系:
解渴,冰镇,流动,液体
副食体系:
调味道
4. 继承关系后,子类,父类中 成员变量,成员方法和构造方法的特点 ******
* 子类父类中成员变量的特点
* 新的关键字super.成员变量名,调用的父类中的成员变量
* this表示本类对象的引用,super表示的父类的存储位置
* 建立对象的时候,父类中的成员变量,也在子类对象存储的堆中
* 子类有,就运行子类,子类没有,运行父类的
* 子类有,变量前,省去了this ,父类有,省去了super
* 静态变量,子类有,省去了子类类名,父类有,省去了父类类名
* 子类父类成员方法的特点
* 当子类中,和父类中出现了一模一样的方法的时候,子类重写父类方法(override)覆盖,复写
* 子类覆盖父类中方法的时候,必须保证权限大于或者等于父类
* 非静态覆盖非静态,静态覆盖静态
* 子类父类构造方法的特点
* 子类构造方法,都要去访问父类中无参数的构造方法,这是默认的
* 无论子类的构造方法,有几个,都会默认的访问父类空参数的构造方法
* 子类的构造方法之间的调用用的this,必须第一行,第一行是super还是this
* 只要保证子类构造方法,直接还是间接的可以访问到父类的构造方法就可以了
下面是关于继承的使用方法代码体现
class Fu{static{ System.out.println("父类静态代码块1");//1}{ System.out.println("父类构造代码块3");//3}Fu(){ System.out.println("父类构造方法4");//4}}class Zi extends Fu{static{ System.out.println("子类静态代码块2");//2}{ System.out.println("子类构造代码块5");//5} Zi(){ System.out.println("子类构造方法6");//6}}class ExtendsDemo6 {public static void main(String[] args) {new Zi();}}
/* 子类,父类构造方法的特点*/class Fu{Fu(int x){ super(); System.out.println("fu...run");}}class Zi extends Fu{Zi(){//子类的构造方法,第一行,默认的隐式代码,不写,有super()调用父类构造方法,空参数的this(4); System.out.println("zi...run");}Zi(int y){this(3,4);System.out.println("zi...run.......y");}Zi(int z,int a){ super(1111);}}class ExtendsDemo5{public static void main(String[] args) {new Zi().hashCode();}}
7 final关键字
* 被final修饰的方法,最终方法,不能被覆盖的
* 被final修饰的类,不能再派生子类 (String)
* 被final修饰的变量,其实是一个常量了,只能赋值一次
* 被final修饰的变量,变量名,全部大写,规范,不是强制
* public static final int X = 10;
* 类中,永恒不变的数据,写成final形式:public static final double PI = 3.1415926
* private static final Single s = new Single();
8 对象的多态性
* 我,在生活中,具备多种形态
* 传智,我是员工
* 家庭,户主
* 朋友,小弟
* 宠物猫
* 咪咪猫
* 小宠物真漂亮
* 老鼠面前,舞伴
* 现实生活中的多态:一个事物具备的多种形态
* 面向对象中的对象的多态
* 父类或者是接口的引用,指向自己的子类对象
父类 f = new 子类();
9 多态的好处和弊端
* 好处:代码的复用性提高,扩展性增强,后期维护性增强,代码量也减少
* 弊端:多态中,只能调用子父类中的公共方法,不能调换子类的特有方法
10 多态中的细节问题:
* 非静态成员变量的特点:
* 编译时期,参考引用型变量中,是否有这个变量
* 运行时期,参考引用型变量中的变量的值
* 静态成员患变量特点
* 编译时期,参考引用型变量中,是否有这个变量
* 运行时期,参考引用型变量中的变量的值
* 静态成员方法的特点
* 编译时期,参考引用型变量中,是否有这个方法
* 运行时期,参考引用型变量中的方法
* 非静态成员方法的特点
* 编译时期,参考引用型变量中,是否有这个方法
* 运行时期,参考子类对象中的方法
在编译时期,JVM静态的绑定在父类的引用变量中
只要在非静态成员方法运行的时候,JVM动态的绑定到子类对象中
* 简单的说:
除了非静态成员方法以外,编译看左边,运行看左边
只有在非静态方法中,编译看左边,运行看右边
下面是关于继承的综合应用的代码练习
/*
利用继承中子类覆盖父类方法的特点
演示,程序的扩展性
需求:
手机来电话
第一代手机 板砖 只显示号码
5年以后
第二代手机 显示姓名和号码
5年以后
第三代手机 显示姓名和号码,特有音乐
5年以后
智能手机上市 显示姓名和号码,特有音乐,显示来电者归属地
*/
/*
实现步骤:
描述手机 class 手机{
public void incoming(){
System.out.println("来电的号码");
}
}
描述手机,class 第二代的手机{
来电的功能,比上一代进行了增强
第二代手机,沿袭了第一代手机的功能,号码显示
并且自己有多了一个功能,姓名的现实
}
*/
class Phone//第一代手机{//手机的来电,显示对方的手机号public void incoming(){ System.out.println("来电的号码");}}class SecondPhone extends Phone//第二代手机{//手机的来电功能public void incoming(){//沿袭父类的功能,调用第一代手机的来电号码显示功能//子类调用父类中的方法,用super super.incoming(); System.out.println("来电人的姓名");}}class ThirdPhone extends SecondPhone//第三代手机{//手机的来电功能public void incoming(){//二代手机,已经完成了,号码和姓名的显示,第三代来说,拿来用super.incoming();System.out.println("特有音乐");}}class FourthPhone extends ThirdPhone//第四代智能机{//手机的来电功能public void incoming(){ super.incoming(); System.out.println("来电归属地");}}class ExtendsTest {public static void main(String[] args) {Phone p = new Phone();p.incoming();SecondPhone s = new SecondPhone();s.incoming();ThirdPhone t = new ThirdPhone();t.incoming();FourthPhone f = new FourthPhone();f.incoming();}}
- 面向对象总结-03-----黑马程序员
- 黑马程序员 面向对象总结
- 黑马程序员-面向对象总结
- 黑马程序员-面向对象总结
- 【黑马程序员】面向对象总结
- 黑马程序员-面向对象03
- 黑马程序员——面向对象总结
- 黑马程序员--C#面向对象总结
- 黑马程序员----面向对象总结一
- 黑马程序员----面向对象总结二
- 黑马程序员_C#面向对象总结
- 黑马程序员 面向对象 异常总结
- 黑马程序员-java 面向对象【个人总结】
- 黑马程序员_java面向对象总结
- 面向对象总结-01-----黑马程序员
- 面向对象总结-02-----黑马程序员
- 面向对象总结-04-----黑马程序员
- 面向对象总结-05-----黑马程序员
- 登录使用cookies记住密码
- MCFW与 codec engine区别
- css 文本两端对齐
- &无须插件!用WIN$Man安装win7更轻松&【xpghost】
- Windows平台下载Android源码
- 面向对象总结-03-----黑马程序员
- 浙江大学PAT上机题解析之3-04. 一元多项式的乘法与加法运算
- android开发播放声音文件
- 工资的安全感调查
- 搜索中最重要的是理解用户的意图,因此你不是在匹配词语,而是在匹配意思
- 【老鸟学算法】大整数乘法——算法思想及java实现
- &深入分析VMware虚拟机的三种组网模式&【xpghost】
- 安卓开发-ViewStub应用
- signal