Java SE 学习笔记3 继承、JDBC技术、异常处理

一、继承

1、Java中的继承

继承是Java面向对象编程技术的一块基石,它允许创建分等级层次的类。运用继承,可以创建一个通用类定义一系列一般特性。该类可以被更具体的类继承。
1、被继承的类称为父类
2、继承父类的类称为子类
3、执行继承时,子类将获得父类的属性,并具有自身特有的属性。

extends关键字用于继承类。声明一个继承父类的类的通常形式如下:

class 父类 {
	} 
class 子类 extends 父类 {
	}

注意:
1、 没有extends,默认父类为Object
2、 只能有一个父类,即单继承
3、子类继承父类的全部成员,除了private成员
4、子类与父类不在同包,使用默认访问权限的成员不能被继承
5、构造方法不能被继承

代码存在重复,导致后果就是代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错),所以要从根本上解决这两段代码的问题,就需要继承,将两段代码中相同的部分提取出来组成 一个父类。

子类继承父类之后,就具有父类当中的属性和方法,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码)

2、继承的类型和特性

Java 不支持多继承,但支持多重继承。
在这里插入图片描述
继承的特性:
1、子类拥有父类非 private 的属性、方法。
2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。
4、 Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
5、提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

3、super与this

super关键字: 我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字: 指向自己的引用。
例如:

class Animal {  
	void eat() {    
		System.out.println("animal : eat");  
	}
}
class Dog extends Animal {  
	void eat() {//重写    
		System.out.println("dog : eat");  
	}  
	void eatTest() {    
	this.eat();   // this 调用自己的方法    
	super.eat();  // super 调用父类方法  
	}
} 

public class Test {  
	public static void main(String[] args) {    
	Animal a = new Animal();    
	a.eat();    
	Dog d = new Dog();    
	d.eatTest();  
	}
}

final 关键字: 声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:
声明类:

final class 类名 {
	//类体
	}

声明方法:

修饰符(public/private/default/protected) final 返回值类型 方法名(){
	//方法体
	} 

4、构造方法继承

子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。
如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。
如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

二、JDBC技术

1、JDBC的使用

工作原理:
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力。
在这里插入图片描述
JDBC API: 提供供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:DriverManager类、Connection接口、Statement接口、
ResultSet接口
DriverManager: 依据数据库的不同,管理各种不同的JDBC驱动。
JDBC 驱动: 由数据库厂商提供,负责连接各种不同的数据库。
在这里插入图片描述
JDBC API主要功能: 与数据库建立连接、执行SQL 语句、处理结果。DriverManager :依据数据库的不同,管理JDBC驱动。
Connection :负责连接数据库并担任传送数据的任务。
Statement :由 Connection 产生、负责执行SQL语句。
ResultSet:负责保存Statement执行后所产生的查询结果。

2、导入jar包

1、在项目上新建一个文件夹lib
在这里插入图片描述
2、把相关jar包放进去
在这里插入图片描述
3、右键jar包,选择Build Path,选择Add to Build Path
在这里插入图片描述

3、分层开发

分层开发的特点及好处:
分层的特点:
1、每一层都有自己的职责。
2、上一层不用关心下一层的实现细节,上一层通过下一层提供的对外接口来使用其功能。
3、上一层调用下一层的功能,下一层不能调用上一层功能。

分层开发的好处:
1、各层专注于自己功能的实现,便于提高质量。
2、 便于分工协作,提高开发效率。
3、便于代码复用。
4、便于程序扩展。

Java中的分层开发:
不同层之间通过实体类传输数据:
DAO,Data Access Object(数据存取对象),位于业务逻辑和持久化数据之间,实现对持久化数据的访问。
DAO起着转换器的作用,把实体类转换为数据库中的记录:

DAO模式的作用:
1、 隔离业务逻辑代码和数据访问代码
2、 隔离不同数据库的实现

三、异常

1、什么是异常

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
异常发生的原因有很多,通常包含以下几大类:
1、用户输入了非法数据。
2、要打开的文件不存在。
3、网络通信时连接中断,或者JVM内存溢出。

要理解Java异常处理是如何工作的,需要掌握以下三种类型的异常:
1、检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
2、运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
3、错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

2、异常处理

异常处理的流程如下:
在这里插入图片描述

Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。
Throwable又派生出Error类和Exception类。

错误: Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。
异常: Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

Java异常的分类和类结构图:
在这里插入图片描述
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws。

异常处理的步骤

1、捕获异常
try:执行可能产生异常的代码。
catch:捕获异常。
finally:无论是否发生异常,代码总能执行

public class Hello {
	public void method(){
	try {      
		// 代码段 1      
		// 产生异常的代码段 2      
		// 代码段 3
	} catch (异常类型 ex) {      
	// 对异常进行处理的代码段4
	}
	// 代码段5
	}
}
异常类型 说明
Exception 异常层次结构的父类
ArithmeticException 算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问 null 对象成员
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如把"abc"转换成数字

异常处理实例:

public class Hello8 {
	public static void main(String[] args) {
		int result=0;
	try {
		int i=0;
		result=10/i;//不走后边代码
	} catch (Exception e) {
		//写入日志
		System.out.println("异常信息:"+e.getMessage());
		//e.printStackTrace();
	}
		System.out.println(result);
	}
}

显示异常:
在这里插入图片描述


多重异常的执行规则:
1、排列catch 语句的顺序:先子类后父类
2、发生异常时按顺序逐个匹配
3、只执行第一个与异常类型匹配的catch语句

2、声明异常
throws:声明方法可能要抛出的各种异常。
如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
3、抛出异常
throw:手动抛出异常。

public class Person {	
	private String name = "";   // 姓名	
	private int age = 0;   // 年龄	
	private String sex = "男";  // 性别	
	public void setSex(String sex) throws Exception {		
		if ("男".equals(sex) || "女".equals(sex))			
			this.sex = sex;		
		else {			
			throw new Exception(“性别必须是\"男\"或者\"女\"!");		
		}	
	}
}

猜你喜欢

转载自blog.csdn.net/zhangzhang__yan/article/details/107673459