黑马程序员--Java学习笔记之面向对象思想(多态、内部类、匿名内部类、异常类)
来源:互联网 发布:淘宝图片保护盾 编辑:程序博客网 时间:2024/06/05 08:11
一、重载与覆盖的区别
重载:只看同名方法的参数列表,参数列表不同即为重载。
重写(覆盖):子类父类方法要一模一样,包括返回类型。
二、多态
1、定义:事物存在的多种表现形态。
类的多态,方法的多态。(方法:重载)
2、多态的前提:
必须是类与类之间有关系。要么继承,要么实现。
通常还有一个前提:存在覆盖。
3、多态的体现:
父类的引用指向了子类的对象。Person student = new Student();
4、多态的利弊:
提高程序的扩展性。但是只能使用父类的引用访问父类的成员。
*类型提升(向上转型),向下转型。
*自始至终只有子类对象在做转型。
Animal a = new Cat();//向上转型a.eat();Cat c = (Cat)a;//向下转型c.catchMouse();//c instanceof Cat//三、在多态中成员方法(非静态)的特点:
1、在编译时期:参阅引用型变量所属的类中是否有调用的方法。有则编译通过。
2、运行时期:参阅对象所属的类中是否有调用的方法。
总结:成员方法在多态调用时,编译看左边,运行看右边。
fu f = new zi();f.method1();//1、编译看父类fu中是否有该方法,有则通过。f.method2();//2、运行时看子类Zi中是否有该方法(包括从父类继承的)。
四、在多态中成员变量的特点:(静态方法也一样)
无论编译还是运行,都参考左边。五、内部类:
背景:当描述事物时,事物的内部还有事物,该事物用内部类表示。因为内部类可以直接使用外部类的内容。
1、内部类(相当于外部类的成员,外部类不可以)可以被private修饰。
2、内部类可以直接访问外部类的成员,因为相当于Outer.this.***;
3、访问格式:
当内部类定义在外部类的成员位置上,可以被private、static等修饰。而且非私有时,可以直接访问,
直接访问内部类:Outer.Inner in = new Outer().new Inner();
4、当内部类中定义了静态成员时,该内部类必须声明为static。
5、内部类一般定义为private,并且对外提供访问接口。
6、内部类定义在局部时,不能被private static等修饰。并且局部内部类中不能定义static成员(因为内部类如果有static成员则该类必须定义为static)。
7、内部类定义在局部时,不可以访问所在的局部中的变量,只能访问被final修饰的局部变量。
六、匿名内部类:
1、前提:必须是继承一个类或者实现接口。
2、假设Listener为接口或者父类
bt.add(new Listener(){//匿名子类的对象作为参数public void show(){//假设父类为抽象类,中的抽象方法为show()*****;} });new Listener(){public void show(){****;}}.show();//前边为匿名子类的对象,后边正常调用对象中的方法。如new Outer().show();
3、匿名内部类的格式:new 父类或接口(){定义子类的内容}4、其实匿名内部类就是一个匿名子类对象。
5、可以给匿名内部类增添新的方法,但是一般没有用
Fu f = new Fu(){public void show(){//父类中定义了,重写****;} public void abs(){//子类新加方法****;}};f.show();//通过f.abs();//编译失败,原因参考上边 三 ;所以匿名内部类新加方法一般没用,只是为了写覆写父类的方法。6、使用匿名内部类是为了简便,因此使用匿名内部类时,内部定义的方法不能过多,否则阅读性太差。
七、异常类:
运用面向对象的思想,将问题进行描述,并进行封装。
1、对于严重的,java通过Error描述。一般不编写针对性处理代码。
2、不严重的,Exception描述。可以针对性处理。
异常处理:
try{//需要检测的代码块}catch(异常类 变量){//处理代码}finally{//一定执行的代码块}
八、自定义异常
1、extends Exception
2、当在函数内部出现throw抛出异常对象,那么就必须给出对应的处理动作。
要么在内部进行try catch处理,
要么在函数上声明让调用者处理。
九、throws和throw的区别
1、throws使用在方法上,即方法的声明;throw使用在方法内,即方法的实现;2、throws后面跟异常类,可以跟多个,用逗号隔开。throw后面跟异常对象,只能用于抛出一种异常。
3、throws代表一种状态,代表可能有异常抛出,但不一定抛出;throw代表动作,表示抛出一个异常,此时已经抛出。
- 黑马程序员--Java学习笔记之面向对象思想(多态、内部类、匿名内部类、异常类)
- 黑马程序员_学习笔记:5) 面向对象3:多态、Object、内部类、匿名内部类
- 黑马程序员--面向对象学习---接口、多态、内部类、异常
- 黑马程序员--Java学习日记之面向对象(多态和匿名内部类)
- 黑马程序员---Java基础---面向对象:多态、内部类、异常
- 黑马程序员——>第九天<面向对象(内部类-匿名内部类-异常)>
- 黑马程序员 Java面向对象——(匿名)内部类
- 黑马程序员 Java面向对象——(匿名)内部类
- 黑马程序员 Java面向对象——(匿名)内部类
- NO8.java笔记【面向对象、抽象类、abstract、接口、interface、多态 、内部类、匿名内部类、异常、Object类】
- 黑马程序员 java学习笔记——面向对象3:多态(含内部类)
- 黑马程序员——【Java】面向对象——内部类_匿名内部类
- 黑马程序员--java基础--对象的多态、内部类、匿名内部类、异常处理机制
- 黑马程序员-Java学习04-接口,多态,内部类,匿名内部类,Object类
- 黑马程序员-Java之匿名内部类
- 黑马程序员--------java面向对象 内部类、异常
- 黑马程序员---java学习笔记之面向对象:静态内部类
- 【学习笔记15】java面向对象-匿名内部类
- Window文件目录遍历 和 WIN32_FIND_DATA 结构
- HDU 4751 Divide Groups
- python 编码问题
- 华为一道机试题
- 小明的调查作业 nyist48
- 黑马程序员--Java学习笔记之面向对象思想(多态、内部类、匿名内部类、异常类)
- 【leetcode】Rotate List
- linux 下 android 源码下载 (repo sync)
- Hibernate createSQLQuery与createQuery的区别
- HDU 4750(Count The Pairs)
- 为什么我认为goroutine和channel是把别的平台上类库的功能内置在语言里
- Ecshop微博登录方式与用户账号的绑定
- android 圆角边框及图片
- 十二五中国电信宽带战略解析(三):规模与效益