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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我看到了一堆分数在向我招手,而我却。。。
回复 使用道具 举报
感觉棒棒的
回复 使用道具 举报
顶一下,
回复 使用道具 举报
还有活动吗
回复 使用道具 举报
ZZBY 中级黑马 2015-9-13 23:27:11
65#
没赶上活动
回复 使用道具 举报
只能是毕向东的?

点评

可以是其他老师视频,但是黑马考试的试题很多都来自毕向东老师的视频,具体还要看你学的情况。  发表于 2015-9-21 20:00
回复 使用道具 举报
福利满满的
回复 使用道具 举报
好东西。。。。。。。。
回复 使用道具 举报
笔记内容:今天讲解的主要是多态
            笔记来源:毕向东Java基础视频第08天
            正文:
               毕老师  day-8
1 多态:可以理解为事物存在的多种体现形态
人:男人,女人
动物:猫, 狗

猫 x=new 猫();
动物 x=new 猫();
动物 x=new 狗();
动物 x=new 鸡();
这种事物存在多种形态吧
多态在对象上面的体现  也在方法上面体现
1 多态的体现
父类的引用指向了 自己的子类对象
父类的引用也可以接受自己的子类对象
2 多态的前提
必须是类与类之间有关系,要么继承,要么实现
存在覆盖
3 多态的好处
大大提高了程序的扩展性。
4  多态的弊端
只能使用父类的引用访问父类中的成员
父类告诉你应该做什么(父类中的成员),你做不就可以了吗
5  多态的应用
类型提升,向上转型
如果想要调用猫的特有方法时,如何操作
强制将父类的引用,转换成为子类类型,向下转型
6 多态的出现代码中的特点(多态使用的注意事项)
成员函数的特点:(非静态,因为有重写特性)  
编译时期,new出来的还不存在,引用型变量所属的类中是否有调用的方法。如果没有编译失败
运行时期,对象所属的类是否有调用方法
Fu f=new Zi();
编译看f
运行看Zi
简单总结:编译看左边,运行看右边
多态中成员变量中的特点,

在多态中,静态成员函数的特点,无论编译或者运行都是参考左边 static
Fu f=new Zi();
父类,子类同名变量,多态时,调用的是左边的
静态方法不需要对象,只要是父类的引用,就去引用型变量,不属于对象


Fu.method4()  f.method1()
静态绑定  动态绑定
静态只是参考引用所属  Fu f (进到内存就绑定好了,对象会变的)
静态的话,就不会被覆盖了




Animal a=new Animal();//向上提升
a.eat();
Cat c=(Cat)a;
c.catchMouse();

多态里面至始至终都是子类对象在做着变化

instanceof   判断所属类型,之后使用所属类型的特有方法
1 子类是有限的

10.3 :多态的主板实例

结合图来写
先有规则,大家都照着做,就和谐了
接口:实现了功能的扩展   复写就可以了
多态:提高了程序扩展性
PCI p=new NetCard();
接口:降低了耦合性,提高了扩展性,implements 这个规则就可以了
接口的引用,提高程序的扩展性,多态

接口和多态的综合使用
10.4 多态的扩展实例
需求:数据库操作
1 连接数据库   JDBC Hibernate
2 操作数据库
c create r read u update d delete
3 关闭数据库连接

考虑过程序的扩展性吗?
为了降低耦合性,通过接口完成
两者之间先不要动手,定义一个规则,按照这个规则,我就可以实现你
DAO  data access object


使用一个接口

10.4 Object类   所有对象的直接或者间接父类
类层次结构的根类  上帝类
该类中定义的肯定是所有对象都具备的功能。
java对象认为:所有对象都具备比较性

没有必要重新定义,只要沿袭父类的功能,建立自己特有比较内容即可,这就是覆盖
(object)父类默认是比较两个对象的地址相等否,可以比较,但是意义不大
想要建立自身特有内容
1 复写
2 但是父类的参数是object所以,需要做判断和转换动作
才可以进行有意义的比较

这些class 文件都有名称,构造函数,一般方法 Class 来描述这些class文件


equals() 方法  toString()方法  hashCode()方法  getClass() 方法  getMethods() 方法  反编译,运行文件给我,反编译,知道怎么写的   getName() 方法
getClass().getName()+@+Integer.toHexString(d1.hashCode());
有共性就可以描述
所有的对象都有自己的内存地址(哈希值)
new Demo(4);
进去内存的时候,类文件被封装成为对象了
类里面又很多东西
对象里面定义很多功能,来获取其中某些东西


Person
getName();
父类默认的没有什么太大的意义,一般在子类都被复写了
如果object被抽象了,那么写子类要复写抽象,不方便



基本数据类型不是对象,是一种特殊的存在
一个变量存一个值  数组存多个值

栈(掌握)
A 存储局部变量:定义在方法声明上和方法中的变量    定义在方法中,以及方法上面的参数
B 堆 存储new出来的数组或者对象                                    new
C 方法区:代码区
D 本地方法区 :与系统有关
E 寄存器 : 给CPU使用
运行.class 加载到内存里面
有进栈的(局部变量),有进堆的(new出来的)
new int[3]; 连续的三块空间,动态初始化

首先,主方法相当于子弹,进入栈底部  先进后出





数组最大的好处:每一个元素都有一个索引,可以通过索引去获取元素,对于数据操作方式的改变,这个效率是非常高的
内存图解:
越界与空指针

java中到底是传值还是传址
[I@  (十六进制的值)  这个是真正传递的值
总结:
java中有木有真正意义上的的引用传递?
int[] arr={};  引用=变量
谈谈你对值传递和引用传递的理解
java中没有真正意义的引用传递
基本类型的变量作为参数传递过来的是变量的值
引用类型的变量作为参数传递过来的是地址值  
我们对引用类型的变量的操作实际是根据    内存地址值  对     内存中对象     的操作
回复 使用道具 举报
懂得分享  有福利
回复 使用道具 举报
终于等到这个福利了,还好没错过你
回复 使用道具 举报
不是很火呢
回复 使用道具 举报
huixue626 来自手机 中级黑马 2015-10-16 01:48:17
73#
现在还有福利吗?
回复 使用道具 举报
huixue626 来自手机 中级黑马 2015-10-17 00:33:41
74#
这里有福利
回复 使用道具 举报
一大波金币来袭~~~
回复 使用道具 举报
666666666666666666
回复 使用道具 举报
这个活动还有没有啊,我刚发过去,希望快点来技术分哟
回复 使用道具 举报
我也觉得做笔记有很多好处
回复 使用道具 举报
1234
您需要登录后才可以回帖 登录 | 加入黑马