黑马程序员----十-面向对象五
来源:互联网 发布:网络交易平台怎么做 编辑:程序博客网 时间:2024/04/30 02:31
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
==========================================
10-01-01
==========================================
1.多态的好处
提高了代码的扩展性,前期定义的代码可以使用后期的内容.
2.多态的弊端
前期定义的内容不能使用(调用)后期子类的特有内容.
3.多态的前提
1必须有关系,继承或实现
2要有覆盖
4.instanceof 例如 Person p=new Person()
Person instanceof p 为true
==========================================
10-01-10
==========================================
1.多态中的静态函数
静态的话就会调用父类,因为new Zi()根本不会被调用.
2.内部类
1内部类可以直接访问外部类中的成员
2外部类要访问内部类,必须建立内部类的对象
3一般用于类的设计
4分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容,这时就把还有的事物定义成内部类来描述.
3.内部类生成的class文件是Outer$inner.class
外部访问内部可以创建方法,创建内部类再访问
4.如果静态内部类,加载外部类时,内部类直接存在.就相当于一个外部类.注意:内部类中不能有静态成员.内部类在局部位置上只能访问局部中被final修饰的局部变量
==========================================
10-1-15
==========================================
1.匿名内部类就是内部类的简写格式
有前提:
内部类必须继承或者实现一个外部类或者接口
2.没名字怎么new呢?
必须有个明确的父类,所以必须继承或者实现一个外部类或者接口.
3.为什么不能创建抽象对象,因为有抽象方法.
如果想创建抽象对象,要先复写抽象方法.
所以 new Demo(){void show(){}};
就可以创建抽象对象Demo,这个Demo是子类.
4.匿名内部类其实就是一个匿名子类对象.
1new一个父类或接口
2复写里面的方法
3可以写其他方法
5.因为是创建匿名对象,可以直接在后面调用里面的方法.类里可以创建对象,方法里也可以创建对象.
==========================================
10-1-16
==========================================
1.如何实现一个匿名对象里的多个方法
那就用父类对象new.
Inter in=new Inter(){}
in.show1();
in.show2();
2.通常使用场景之一:
当函数参数是接口类型时,而且接口中的方法不超过三(不包含3),可以用匿名内部类作为实际参数进行传递.方法太多就失去阅读性.
==========================================
10-1-17
==========================================
1.在主函数中new Inner(); 为什么不行
因为主函数不能直接访问自己的非静态的内部类Inner.
2.如果是用父类来命名,那么父类中有几个方法就只能用几个方法.
Inter in=new Inter(){}
3.可以直接new Object(){}
但是一样不能命名.
4.创建的是匿名子类对象,所以命名时,那么子类对象就向上转型了,那么就不能使用子类方法了.
==========================================
10-1-18
==========================================
1.内存图解综合一下
先出来show...0,然后是constructor...9,
因为new的时候显示初始化还没有进行,先是默认初始化0,super走了show(),但是这时候还没有显示初始化,所以显示初始化在super()后面.
2.上次自己发现不能在类中直接写执行代码,原来只要加一个大括号,就可以直接写,而且会在构造函数之前执行.
3.当在局部代码块里面int num时,就是他自己的num,当他改变了num,就是类的num.
4.c9,f,s10,z10错误
f,s0,c9,z10正确
如果父类有aaa,那么
aaa,f,s0,c9,z10
原因:
其实上面说的构造代码块就是显示初始化的后面,之前是因为有super,但是没有父类对象,所以super执行完了就进行显示初始化.
现在有了父类对象,所以先执行super,也就是父类构造函数执行完了,就进行显示初始化,然后再运行子类super后的语句.
5.所以,1super,2显示初始化,3构造代码块初始化
- 黑马程序员----十-面向对象五
- 黑马程序员——自学总结(十)面向对象
- 【黑马程序员】面向对象(五) 第九天
- 黑马程序员--面向对象之五:异常处理
- 黑马程序员_Java基础_面向对象(五)_09
- 黑马程序员_笔记五_面向对象(高级)
- 黑马程序员——Java面向对象(五)
- 黑马程序员-----Java基础(五):面向对象之一
- 黑马程序员 面向对象
- 黑马程序员---面向对象
- 黑马程序员-面向对象
- 黑马程序员-面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- unexpected token: * near line 1, column 8 [select * from t_user where 1=1]
- 写在2015年年底
- SELinux
- 敏捷的前提
- java
- 黑马程序员----十-面向对象五
- Terrier文档翻译:概述
- fwrite和fread函数的用法小结
- 2016智能硬件开发者创客大会
- 阿里云PPTP VPN(Debian 7.5)
- javascript日期字符串和日期对象相互转换
- 点菜系统--总结
- OpenSSH中SCP协议实现相关程序
- linux常用命令—— 设备管理(十六)