JAVA WEB高级
作用:
- 使用JAVA编写面向对象的程序
- 适用集合存取对象
- 使用JAVA异常处理编写程序
- 使用日志工具和单元测试工具
- 使用JDBC操作数据库
- 使用JSP , Servlet进行WEB开发
封装和继承
封装
概念:
1.将类的属性私有化,并提供公有方法访问私有属性的机制
2.将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
好处:
- 隐藏类的实现细节
- 数据访问的安全性,应用数据访问限制规则
- 保证数据的完整性
- 有利于代码的可维护性
封装的实现步骤 - 使用private将类中属性私有化(使用private 修饰的属性只能在类的内部调用,访问权限最小)
- 给每个私有属性提供公有的getter/setter方法
- 在getter/setter方法中添加访问限制语句
构造方法
特点:
- 方法名相同
- 方法没有返回类型
- 通过new关键字调用
无参构造方法:
(若类中没有显示定义构造方法就JVM会默认添加一个无参构造方法)
有参构造方法:
(有参构造方法常常用于给属性初始化赋值,若类中存在有参构造方法,建议也要添加一个无参构造方法)
方法重载
特征:
- 在同一个类中
- 方法名相同
- 参数列表不同
- 访问权限即返回类型无关紧要
构造方法重载好处:(完成多种初始化行为)
继承的作用
避免重复的代码(代码重用)
继承的特点:
- 子类继承父类后,拥有所有能访问的属性和方法
- 具备“is-a”的关系
- 子类无法继承父类私有方法及构造方法
- 单一性
- 遗传性
继承需要符合的关系:is-a,父类更通用,子类更具体
继承的实现:
- 在JAVA中实现继承很简单,使用extends关键字即可,语法如下所示:
Public class SubClass extends SuperClass {//继承 }
SubClass成为子类(扩展类或者派生类);SuperClass成为父类(基类或者超类)
可以被默认添加Super();Super(参数表);(只能是构造方法的第一条语句) - 父类中定义公共的属性和方法,子类中定义特有的属性和方法
- 子类中通过super关键字指代父类
继承中的构造方法:
实例化子类对象时,首先调用父类构造方法,然后再调用子类构造方法
方法重写
- 在父类与子类之间
- 方法名完全相同
- 参数列表完全相同
- 返回类型完全相同
- 子类的访问修饰符的范围必须大于等于父类中的访问修饰符
(public>=default>=protected>=private)
父类中私有的方法不能被继承,所以也不能被重写
方法重载 - 同一个类中
- 方法名相同
- 参数列表不同
- 访问权限和返回类型无关紧要
多态和接口
多态:
多态性是OOP中的一个重要特性,主要是用来实现动态联编,程序的最终状态只有在执行中才被决定而非在编译期间决定。能提高大型系统的灵活性和扩展性。
多态存在的三个必要条件:
1.继承
2.方法重写
3.父类引用指向子对象
向上转型和向下转型:
子类转换为父类:自动转换
- 上转型对象不能操作子类新增的成员变量和方法
- 上转型对象可以操作子类继承或重写的成员变量和方法
- 如果子类重写父类的某个方法,上转型对象调用该方法时,是调用的重写方法
父类转换为子类:强制转换
(父类就是一个子类,否则会出现类型转换错误)
抽象类
- 是一种模板模式。抽象类为所有子类提供了一个通用模板,子类可以在这个模板基础上进行扩展。
- 通过抽象类,可以避免子类设计的随意性,可以严格限制子类的设计,使子类之间更加通用。
要点:
■抽象方法和抽象类均必须用abstract来修饰。
■抽象方法没有方法体,只需要声明不需实现。
■有抽象方法的类只能定义抽象类
■相反抽象类里面的方法不一定全是抽象方法,也可能没有抽象方法。
■抽象类可以包含属性,方法,构造方法。
■抽象类不能实例化,及不能用new来实例化抽象类,只能用来被子类调用。
■抽象类只能用来继承。
■抽象方法必须被子类实现。抽象类的子类必须覆盖所有的抽象方法才能被实例化,否则还是抽象类。
接口:
接口:public interface 接口名称 {} //语法
(接口里的方法没有方法体,所有的方法都是抽象的)
实现:public class 类名 implements 接口 1,接口2…{}
(一个类可以实现多个接口,但是只能继承一个父类)
抽象类和接口的区别
■接口就是比"抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
■接口就是规范,定义的是一组规则。
■接口的本质是契约,就像我们人间的法律一样。 制定好后大家都遵守。
面向对象总结:
00基本特征 定义 具体实现方式 优势
封装 隐藏实现细节,对外提供公共的访问接口 属性私有化、添加公有的setter、 getter方法 增强代码的可维护性
继承 从一个已有的类派生出新的类,子类具有父类的一般特性,以及自身特殊的特性 继承需要符合的关系: is-a 1、 实现抽象(抽出像的部分)
2、增强代码的可复用性
多态 同一个实现接口,使用不同的实例而执行不同操作 通过Java接口继承来定义统一的实现接口:通过方法重写为不同的实现类子类定义不同的操作 增强代码的可扩性、可维护性
异常处理
异常处理机制:
@在整个java的异常处理中,实际上也是按照面向对象的方式进行处理,步骤如下:
■一旦产生异常,则首先会产生一个异常类的实例化对象
■在try语句中对此异常对象进行捕捉
■产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码块;
■如果有finally语句,则最后执行finally语句内容
异常处理格式:
try {
//有可能出现异常的语句
}catch(异常类 异常对象) {
//编写异常的处理语句
} [catch(异常类 异常对象) {
//编写异常的处理语句
}….]
[ finally {
//不管如何一定 会执行的代码:
}]
Throws:
用在方法前,声明此方法可能会产生某种类型异常,它强制要求方法的调用者必须用try-catch来处理。
Throw: 开发人员自行抛出异常。
Java 集合框架
泛型:
所谓泛型,就是允许在定义类、接口、方法时使用类型形参,这个类型形参将在声明变量、创建对象、调用方法时动态地指定(即传入实际的类型参数,也可称为类型实参)。Java 5改写了集合框架中的全部接口和类,为这些接口、类增加了泛型支持,从而可以在声明集合变量、创建集合对象时传入类型实参,这就是在前面程序中看到的List和ArrayList 两种类型。