您的位置:首页 > 职场人生

黑马程序员 -- Java基础学习(3)

2014-12-12 17:49 225 查看
------- android培训java培训、期待与您交流! ----------

多态

• 动物 y = new 猫();    DuoTaiDemo.java    DuoTaiDemo2.java
▸ 体现
• 父类引用指向子类对象
• 父类引用接收自己的子类对象
▸ 前提
• 类与类之间有关系,继承或实现
• 要有重写
• 好处:提高程序扩展性
• 弊端:只能使用父类的引用访问父类中的成员
▸ 对象转型    DuotaiDemo3.java
• 类型提升/向上转型:Animal a = new Cat();
• 向下转型:强制将父类引用转成子类类型:Cat c = (Cat)a;
• 不能将父类对象转成子类类型
  只有父类引用指向子类对象时才可以转换
  自始至终都是子类对象在变化
• 类型转换异常 ClassCastException
• instanceof 判断类型
▸ 使用注意事项    DuotaiDemo3.java
▸ 多态中(非静态)成员函数的特点 
• 存储在非静态区
• 编译时:查找引用变量所属类中是否有调用的方法,如果有编译通过,没有则失败
• 运行时:查找对象所属的类中是否有调用的方法
• 成员函数在多态调用时:编译看左边,运行看右边
• 成员变量的特点:无论编译或运行都参考引用型变量所属的类(左边)
• 静态成员函数的特点:编译和运行都参考左边
  因为一进内存就已经绑定到所属的类
• 电脑运行示例:主板    DuoTaiDemo5.java
▸ 数据库的操作    DBOperate.java
• 1.连接数据库 JDBC Hibernate
  2.操作数据库 
  crud: create read alter delete
  3.关闭数据库连接
• DAO: data access object

Object类

• 类层次结构的根类
▸ equals()    ObjectDemo.java
• 默认:比较地址值
• 如果自定义类中也有比较相同的功能,可以重写equals方法
public boolean equals (Object obj) {
if (!(obj instanceof Demo)) {
return false;
}
Demo d = (Demo)obj;
...
• toString()    描述类时一般要重写该方法


内部类

InnerClassDemo.java
InnerClassDemo2.java
• 将一个类定义在另一个类里面
▸ 访问规则
• 可以直接访问外部类中的成员,包括私有
  内部类持有外部类的引用,格式:外部类名.this
  this.x 内部类的x
  Outer.this.x 外部类的x
• 外部类要访问内部类必须建立内部类对象
▸ 访问格式
• 非私有的内部类可以在外部其他类中直接建立该内部类对象
  外部类名.内部类名  变量名 = 外部类对象.内部类对象;
  Outer.Inne in = new Outer().new Inner();
▸ 内部类可以被成员修饰符修饰
• static:只能直接访问外部类的static成员
• 从其他类访问静态内部类的非静态成员
  new Outer.Inner().function();
• 从其他类访问静态内部类的静态成员
  Outer.Inner.function();
• 当内部类定义了静态成员,该内部类也必须是静态的
• 当外部类的静态方法访问内部类时,该内部类也必须是静态的
• 内部类可以私有
• 当描述食物时,事物的内部还有事物,内部事物在使用外部事物的内容,则用内部类描述
  可以用private封装,提供访问方法(例子:身体和心脏)
▸ 内部类定义在局部位置

4000
• 不能被成员修饰符修饰
• 可以直接访问外部类中的成员,因为还持有外部类中的引用
  但是不可以访问所在局部中的变量,只能访问final修饰的
▸ 匿名内部类:内部类的简写格式    InnerClassDemo3.java
• 定义前提:必需继承一个类或实现一个接口
• 格式:new 父类或者接口() {定义子类的内容}
new AbsDemo() {
void show() {
***
}
}.show();
• 实质就是一个匿名子类对象(带内容的对象)
• 如果要起名,只能建立父类引用,没法访问子类特有的成员
• 定义的方法最好不要超过3个
• 练习    InnerClassTest.java
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: