A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 321哈哈哈 中级黑马   /  2017-10-1 17:08  /  978 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 321哈哈哈 于 2017-10-12 02:19 编辑

设计一个系统时,目标应该是找到并且创建某些类
每个类都有具体的用途
类要能相对独立的完成一个任务,又不能包含太多功能而影响复用
将程序开发看做一个增量的过程,看做一个有机的、进化的生命体去培养,会获得更多的成功和迅速的回馈。
继承和组合是你实践这个过程的两个基本工具
组合是将现有类作为新类型的底层实现来加以复用,(has-a测试),“帮忙干活”,其他类的对象是该类对象一个又一个的组成部分。新类没有获得任何接口。
继承是复用接口(父类对子类开放的成员),(is-a测试)
代理:将部分相对独立的功能(比如飞船的运动控制模块)写到一个类里面,对外提供接口。在主类中创建该类对象,作为主类对外提供的部分接口的底层实现。通过这种操作,复用了另一个类的接口(不是父类的性质,所以不用继承)
组合:将private对象引用置于新类中即可(如果一个对象不仅仅是新类底层设计的一部分,还是问题分析的一部分,可以将该对象设为pubic的,前提是对象自身隐藏了具体实现p137??)
继承:将父类所有的成员属性(和“助手”方法)指定为private的(保留修改底层实现的权利),对子类开放的接口(方法)指定为public或者protected(子类能继承到父类的private属性,但必须通过继承的protected方法来读写该属性)
创建的子类对象内部包含一个父类对象,因为子类的构造方法的第一句是调用父类构造
向上转型:把子类对象的引用当做父类对象的引用来传递给形参(形参指向的其实是子类对象中的父类对象,所以只能调用父类接口,看不到子类特有的接口)
继承并不常用,只在用得到向上转型的情况下才用继承,否则继承并不必须??
final关键字
1.final数据
自定义常量的典型定义方式:public static final公共的,整个类独一份,常量(根据惯例,static final修饰的属性用大写命名,因为是final的所以权限修饰为最高即可)
final修饰的引用:不能指向其他对象,但可以对该对象进行操作
只用final修饰的属性(没有static的)和其他属性一样存在于每个对象中,只是值不能改变,但可以在定义时不赋值(blank final),在构造方法中对其赋值,这样每个对象中该属性的值是不同的
final修饰形参:如果是基本数据类型,表示该参数只读(可用于向匿名内部类传递数据??)
2. final方法
禁止覆盖(重写),出于设计的考虑,想确保在继承中使方法行为保持不变??
3. final
你不打算继承该类(你对该类的设计永不需要做任何变动),也不允许别人继承该类(出于安全考虑,你不希望它有子类)??
Tip
在每个类中设置main方法的技术,可以使每个类的单元测试都变得简单易行
垃圾回收器是用来清理内存的,不能依赖它去帮我们做别的事情(比如关闭资源),如果有需要,就编写自己的清理方法(不要使用finalize方法,该方法只在垃圾回收的时候才调用),然后将该方法置于try{}finally{这里}try表示接下来保护区内的语句需要被特殊处理,此处的特殊处理是无论保护区内发生什么事情finally子句总是会执行)。注意清理方法中清理的顺序要和声明的顺序相反。
private的 隐含的就是final
final类中所有方法都隐式指定为final,其中的属性并没有这样指定(方法当然可以修改)
父类的private方法是其功能实现的“助手”方法,是对外隐藏的,不是公开接口。虽然继承给子类,但仍然是对子类隐藏的,让它在那待着就好,不用去管它。对这类方法也就不会有重写。能重写的方法是子类向上转型后仍然能调用的方法(即父类的接口)
类的加载
类是在其任何static成员被初次访问时加载的(构造器也是static的,所以创建对象会加载)
加载一个子类之前,先加载其父类(由关键字extends得知),以此类推
加载时会静态初始化(静态属性初始化;静态代码块执行)
初始化
类加载完成后,可以创建对象了(此时静态初始化已经完成)
此时成员属性(非静态)有三次初始化的机会
(1)声明语句。此时所有基本类型被设为默认值,引用类型被设定为null(通过将对象内存设为二进制零值而一举完成)
(2)声明时紧跟的赋值语句
(3)构造方法中的赋值语句
一种别扭的写法:在父类中写main方法,在其中完成对子类的向上转型(父类引用指向子类对象),然后调用了父类的私有方法(只做演示用),这个方法就不是父类的接口了,接口是对外提供的,在其他类里能看到的。

2 个回复

倒序浏览
回复 使用道具 举报
厉害了~大勇
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马