Java 对象特性知识点复习
2015-12-08 19:31
274 查看
对象的三大特性
封装
继承
多态
封装的实现步骤
修改属性的可见性,设为 private
创建 getter/setter 方法,用于属性的读写
在 getter/setter 方法中加入属性控制语句,对属性的合法性进行判断
成员内部类
定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即需要 内部类 对象名 = 外部类对象.new 内部类();
成员内部类的.class 文件总是这样:外部类名$内部类名.class
外部类不能直接使用内部类的成员和方法,需要先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法
如果外部类和内部类具有相同的成员变量和方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字
静态内部类
静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方法访问
如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员
如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名 = new 内部类();
方法内部类
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符
继承的初始化顺序
初始化父类再初始化子类
先初始化对象中的属性,再执行构造方法中的初始化
final 关键字
final 修饰类,则该类不允许被继承
final 修饰方法,则该方法不允许被重写
final 修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值,或在构造方法中赋值,两者选其一)
final 修饰变量,则该变量的值只能赋值一次,即变为常量
super 关键字
如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类的无参构造方法
要显式调用父类的构造方法,必须放在代码的第一行
类对象与类的对象的区别
类对象包含的信息是类的属性(如某人的身高、体重)
类的对象包含的信息是类的属性值(如某人的身高是180cm,体重是60kg)
多态
引用多态,一个父类引用可以指向本类的对象,也可以指向子类的对象
方法多态,创建本类对象时,调用的方法为奔雷方法,创建子类对象时,调用的方法为子类重写方法或继承的方法
封装
继承
多态
封装的实现步骤
修改属性的可见性,设为 private
创建 getter/setter 方法,用于属性的读写
在 getter/setter 方法中加入属性控制语句,对属性的合法性进行判断
成员内部类
定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即需要 内部类 对象名 = 外部类对象.new 内部类();
成员内部类的.class 文件总是这样:外部类名$内部类名.class
外部类不能直接使用内部类的成员和方法,需要先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法
如果外部类和内部类具有相同的成员变量和方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字
静态内部类
静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方法访问
如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员
如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名 = new 内部类();
方法内部类
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符
继承的初始化顺序
初始化父类再初始化子类
先初始化对象中的属性,再执行构造方法中的初始化
final 关键字
final 修饰类,则该类不允许被继承
final 修饰方法,则该方法不允许被重写
final 修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值,或在构造方法中赋值,两者选其一)
final 修饰变量,则该变量的值只能赋值一次,即变为常量
super 关键字
如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类的无参构造方法
要显式调用父类的构造方法,必须放在代码的第一行
类对象与类的对象的区别
类对象包含的信息是类的属性(如某人的身高、体重)
类的对象包含的信息是类的属性值(如某人的身高是180cm,体重是60kg)
多态
引用多态,一个父类引用可以指向本类的对象,也可以指向子类的对象
方法多态,创建本类对象时,调用的方法为奔雷方法,创建子类对象时,调用的方法为子类重写方法或继承的方法
相关文章推荐
- ognl.MethodFailedException异常解决方法(Struts2)
- 给Eclipse装上反编译器(eclipse反编译插件)
- java中Vector的用法是什么?
- java并发容器ConcurrentHashMap学习心得
- javaweb学习总结(九)—— 通过Servlet生成验证码图片
- [置顶] Struts2入门的入门------下载,配置,基本概念总结
- 【springmvc+mybatis项目实战】杰信商贸-17.货物修改+删除
- 【springmvc+mybatis项目实战】杰信商贸-18.附件分类基础表+数据字典
- 【springmvc+mybatis项目实战】杰信商贸-19.级联删除
- 【springmvc+mybatis项目实战】杰信商贸-20.合同货物数和附件数
- 【springmvc+mybatis项目实战】杰信商贸-21.合同总金额SQL
- 【springmvc+mybatis项目实战】杰信商贸-23.重点知识回顾
- 【springmvc+mybatis项目实战】杰信商贸-25.出货表打印
- 【springmvc+mybatis项目实战】杰信商贸-24.神奇的POI
- 【springmvc+mybatis项目实战】杰信商贸-26.出货表修饰+下载
- 【springmvc+mybatis项目实战】杰信商贸-27.POI由HSSF升级为XSSF
- 【springmvc+mybatis项目实战】杰信商贸-28.POI百万数据打印
- 【springmvc+mybatis项目实战】杰信商贸-29.购销合同技术难点分析
- 【springmvc+mybatis项目实战】杰信商贸-31.出口报运业务-购销合同查询与上报
- 【springmvc+mybatis项目实战】杰信商贸-32.出口报运修改+报运货物批量展现-批量修改控件1