初识面向对象
-
面向过程
-
步骤简单清晰,第一步做什么,第二步做什么
-
面向过程适合处理一些较为简单的问题
-
-
面向对象(Object-Oriented Programming ,OOP)
-
分类思维方式
-
适合处理复杂问题
-
-
面向对象本质
以类的方式组织代码,以对象的组织(封装)数据
-
三大特性
-
封装
-
继承
-
多态
-
方法回顾和加深
-
修饰符
/*
修饰符 返回值类型 方法名(){
//方法体
return 返回值;
}
*/
-
return 结束方法,返回一个结果
-
方法名 注意规范,见名知意
-
静态方法 非静态方法
-
值传递 引用传递
对象的创建分析
-
创建和初始化对象
使用new关键字创建对象
-
构造器与构造方法
-
必须与类名相同
-
-
构造器作用
-
使用new关键字,本质是在调用构造器
-
用来初始化值
(alt + insert 生成构造器)
-
面型对象三大特征
封装
-
程序设计要追求 “高内聚,低耦合”
-
属性私有,get/set
-
意义
-
提高程序安全性,保护数据
-
隐藏代码的实现细节
-
统一接口
-
系统可维护性增加
-
继承
-
继承本质就是对一批类的抽象,从而实现对现实世界更好的建模
-
extands
的意思是“扩展”,子类是父类的扩展 -
JAVA中只有单继承,没有多继承
-
this 当前类
-
代表对象不同
-
this:本身调用者这个对象
-
super:代表父类对象的应用
-
-
前提
-
this:没有继承也可以用
-
super:只能在继承条件下可以使用
-
-
构造方法
-
this():
本类构造 -
super():
父类构造
-
-
-
super 父类的东西
-
super调用父类的构造方法,必须在构造方法的第一个
-
super必须只能出现在子类的方法或者构造方法中
-
super和this不能同时调用构造方法
-
-
-
子类无参构造自动调用父类无参构造
-
重写(方法重写)
-
需要有继承关系,子类重写父类的方法
-
方法名必须相同
-
参数列表必须相同
-
修饰符 :范围可以扩大但是不能缩小 public>protected>default>private
-
抛出的异常:范围,可以被缩小,但不能被扩大
ClassNotFoundException --> Exception(大)
-
-
为什么需要重写:
-
父类的功能子类不一定需要,或者不一定满足
Alt + Insert override
-
-
多态
-
即同一方法可以根据发送对象的不同而采用多种不同的行为方式
-
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多种(父类,有关系的类)
-
instanceof
-
类型转换
-
父类引用指向子类的对象
-
把子类转换为父类,向上转型
-
把父类转为子类,向下转型(强制转换)
-
方便方法的调用,减少重复的代码
-
-
注意事项
-
多态是方法的多态,属性没有多态
-
父类和子类,有联系 类型转换异常
ClassCastException
-
存在的条件:继承关系,方法需要重写 父类引用指向子类对象
-
-
不能重写的:
-
static
方法,属于类,不属于实例 -
final
常量 -
private
方法
-
抽象类和接口
抽象
-
abstract
加在类前面 抽象类 类extends 继承 (接口可以多继承)-
抽象类不能new只能靠子类去实现它:约束
-
抽象类里可以写普通方法
-
抽象方法必须在抽象类中
-
-
abstract
加在方法前 抽象方法 只有方法名字,没有方法的实现 -
抽象类的所有方法
接口
-
interface
定义关键字 ,接口都需要有实现类 -
接口中的所有定义其实都是抽象的
public abstract
-
实现类接口的类就需要重写接口中的方法
-
作用
-
约束
-
定义一些方法,让不同的人实现
-
public abstract
方法 -
public static final
常量 -
接口不能别实例化,接口中没有构造方法
-
implemrnts
可以实现多个接口 -
必须重写接口中的所有方法
-
内部类及OOP实战
内部类
-
在一个类的内部定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对与B类来说就是外部类
异常机制
英文名
-
Exception 异常
简单分类
-
检查性异常
-
最具代表性的检查异常是用户错误或问题引起的异常
-
-
运行时异常
-
运行异常是可能被程序员避免的异常
-
-
错误
-
错误不是异常,而是脱离程序员控制的问题
-
异常处理机制
抛出异常
捕获异常
-
假设要捕获多个异常:从小到大
try{ //try监控区域
System.out.println(a/b);
}catch(Error e){ //catch(想要捕获的异常类型)捕获异常
System.out.println("Error");
}catch(Exception e){
System.out.println("Exception");
}catch(Throwable t){
System.out.println("Throwable");
}finally{ //处理善后工作
System.out.println("finally");
}
//finally 可以不要 假设IO,资源,关闭
异常处理五个关键字
-
try
-
catch
-
finally
-
throw
-
throws
自定义异常
-
继承异常类
extends Exception
总结
-
处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理
-
在多重catch块后面,可以加上catch(Exception)来处理可能会被遗忘的异常
-
对于不确定的代码,也可以加上try-catch,处理潜在异常
-
尽量去处理异常,切记只是简单的调用
printStackTrace()
去打印输出 -
具体如何处理异常,要根据不同的业务需求和异常类型去决定
-
尽量添加finally语句块去释占用的资源