黑马程序员 -- Java基础学习(3)
来源:互联网 发布:java socket连接 编辑:程序博客网 时间:2024/06/05 19:18
------- 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.javaInnerClassDemo2.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封装,提供访问方法(例子:身体和心脏)▸ 内部类定义在局部位置• 不能被成员修饰符修饰• 可以直接访问外部类中的成员,因为还持有外部类中的引用 但是不可以访问所在局部中的变量,只能访问final修饰的▸ 匿名内部类:内部类的简写格式 InnerClassDemo3.java• 定义前提:必需继承一个类或实现一个接口• 格式:new 父类或者接口() {定义子类的内容} new AbsDemo() { void show() { *** } }.show();• 实质就是一个匿名子类对象(带内容的对象)• 如果要起名,只能建立父类引用,没法访问子类特有的成员• 定义的方法最好不要超过3个• 练习 InnerClassTest.java
0 0
- 黑马程序员 -- Java基础学习(3)
- 黑马程序员 java基础学习笔记3
- 黑马程序员 -- Java基础学习(1)
- 黑马程序员 -- Java基础学习(2)
- 黑马程序员 -- Java基础学习(4)
- 黑马程序员 -- Java基础学习(5)
- 黑马程序员 -- Java基础学习(6)
- 黑马程序员 -- Java基础学习(7)
- 黑马程序员 -- Java基础学习(8)
- 黑马程序员 -- Java基础学习(9)
- 黑马程序员 -- Java基础学习(10)
- 黑马程序员 -- Java基础学习(11)
- 黑马程序员-Java基础学习(函数)
- 黑马程序员-Java基础学习(数组)
- 黑马程序员——Java基础学习日记(3)
- 黑马程序员-JAVA基础学习
- 黑马程序员----java基础加强(3)
- 黑马程序员--Java基础学习十(Java线程)
- 对CSS中的Position、Float属性的一些深入探讨
- iOS开发编码规范与审核时的注意事项
- 手机网页制作的认识(有关meta标签)
- 管道的力量——记一次脚本的实现
- 聊聊JVM(十)Mac下hsdis和jitwatch下载和使用
- 黑马程序员 -- Java基础学习(3)
- jenkins配置权限不对导致无法登陆或者空白页面解决办法
- 对session和cookie的一些理解
- LINQ实战读书笔记 LINQ TO SQL(一)
- WEB架构师成长必经之路
- Javase基础学习笔记之集合(3)
- html img图片等比例缩放
- CXF spring 整合
- qt信号signal和槽slot机制