查看“核心技术:继承”的源代码
←
核心技术:继承
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:JavaCore]] == 类、超类和子类 == === 定义子类 === 关键字 extends 表示正在构造的新类(subclass子类;derived class派生类;child class孩子类)派生于一个已存在的类(superclass超类、base class基类、parent class父类) === 覆盖方法 === 父类中的某些方法对子类并不一定适应,需要子类对方法覆盖(override); * 子类不能之间访问父类的私有域,必须使用父类私有域对应的公有访问接口; * 子类可以增加域、增加方法、覆盖方法,但不能删除继承的域和方法; * 覆盖一个方法的时候,子类方法不能低于超类方法的可见性; “super”关键字用于只是编译器调用父类方法。 * super与this不同,并非一个对象的引用,不能将super赋给另一个对象变量; === 子类构造器 === 子类构造器中: * 如果使用super显示调用父类构造器,则该语句必须是子类构造器的第一条语句出现; * 如果没有显示调用父类构造器,则将自动地调用父类默认(没有参数)的构造器; * 如果没有显示调用父类构造器,且父类没有无参构造器,则Java编译器将报告错误; === 多态 === 有一个用来判断是否应该设计为继承关系的规则:“is-a”,即“'''置换法则'''”,'''程序中出现超类对象的任何地方都可以用子类对象置换'''。 * 一个对象可以指示多种实际类型的现象,被称为'''多态'''(polymorphism);<br/> *: 如,Employee既可以引用一个Employee对象,也可以引用Employee的子类对象(如,Manager) * 在运行时能自动地选择调用哪个方法的现象,被称为'''动态绑定'''(dynamic binding);<br/> * 如果方法是private方法、static方法、final方法,那么编译器可以准确地知道应该调用的方法,这种调用方式被称为'''静态调用'''(static bingding); === 阻止继承:final类和方法 === final使用: * final域:域不能被修改 * final方法:方法不能被覆盖 * final类:类不能被扩展(即不能被继承) *: 类中的所有方法自动成为final *: 类中的域并不为final === 强制类型转换 === 对象的强制类型转换: # 只能在继承层次内进行类型转换; # 在将父类转换为子类之前,应该用'''instanceof'''检查 #* “instanceof”用于判断对象是否为某个类型 === 抽象类 === * 包含一个或多个抽象方法的类,必须被声明为抽象类; * 除了抽象方法,抽象类还可以包含具体数据和具体方法; * 抽象类不能被实例化; * 可以定义抽象类对象,该对象只能引用非抽象子类的对象; === 受保护访问 === # public:公有,对其他类可见 # private:私有,对其他类不可见(即使子类也不可见) # protect:受保护,对所有子类 及同一个包中的其他类可见,包外不可见 * 对本包可见是默认的,不需要修饰符; == Object:所有类的超类 == == 泛型数组列表 == == 对象包装器与自动装箱 == == 参数数量可变的方法 == == 枚举类 == == 反射 == == 继承的设计技巧 ==
返回至“
核心技术:继承
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息