javase继承方法、包的创建、异常处理和JDBC
1.Java中的继承
(1)继承是Java面向对象编程技术的一块基石,它允许创建分等级层次的类。运用继承,可以创建一个通用类定义一系列一般特性。该类可以被更具体的类继承。
被继承的类称为父类
继承父类的类称为子类
执行继承时,子类将获得父类的属性,并具有自身特有的属性。
extends关键字用于继承类。声明一个继承父类的类的通常形式如下:
注意:
没有extends,默认父类为Object
只能有一个父类,即单继承
子类继承父类的全部成员,除了private成员
子类与父类不在同包,使用默认访问权限的成员不能被继承
构造方法不能被继承
继承的特性:
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
(2)super与this
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
输出:
animal : eat
dog : eat
animal : eat
final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:
声明类:
声明方法:
2. 包的创建
Java允许使用包将多个类组织在一起。借助于包可以方便的组织管理类,并将自定义的类与其它的类库分开管理。Java就是使用包来管理类库的 。 使用包维护类库比较简单,只要保证在同一个包下不存在同名的类即创建一个包也比较简单:只要将package命令作为一个Java源文件的第一句就可以,该文件中定义的任何类将属于指定的包。
用package声明包,以分号结尾。
作为Java程序的第一条语句。
4. 包中类的访问
一个类可以访问其所在包的所有类。访问其他包的类有如下两种方式访问 :
使用import语句导入要访问的类 ,如:
import java.util.;
import mypackage.school.Student ;
使用的类名前直接添加完整的包名 ,如:
java.util.Date now = new java.util.Date();
mypackage.school.Student tom = new mypackage.school.Student();
注意: 指明导入当前包的所有类,不能使用类似于java. * 的语句来导入以java为前缀的所有包的所有类。
3.9.3 包的命名规范
包名由小写字母组成,不能以圆点开头或结尾
包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名
package net.javagroup.mypackage;
包名后续部分依不同机构内部的规范不同而不同
3.异常
4.JDBC的使用
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力。
JDBC工作原理:
JDBC API:提供供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:
DriverManager类
Connection接口
Statement接口
ResultSet接口
JDBC工作原理:
DriverManager:依据数据库的不同,管理各种不同的JDBC驱动。
JDBC 驱动:由数据库厂商提供,负责连接各种不同的数据库。
JDBC API主要功能:与数据库建立连接、执行SQL 语句、处理结果。
DriverManager :依据数据库的不同,管理JDBC驱动。
Connection :负责连接数据库并担任传送数据的任务。
Statement :由 Connection 产生、负责执行SQL语句。
ResultSet:负责保存Statement执行后所产生的查询结果。
9.3.2 使用流程
JDBC的使用流程如下:
try {
//1.加载JDBC驱动
Class.forName(JDBC驱动类);
}
… …
try {
//2.与数据库建立连接
Connection con=DriverManager.getConnection(URL,数据库用户名,密码);
//3.发送SQL语句并得到结果
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT a, b, c FROM Table1”);
//4.处理返回结果
while (rs.next()) {
int x = rs.getInt(“a”);
String s = rs.getString(“b”);
float f = rs.getFloat(“c”);
}
//5.释放资源
rs.close();
stmt.close();
con.close();
}
数据库访问基类:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
-
数据库访问基类
*/
public class BaseDao {
//数据库驱动
private String driver=“com.mysql.jdbc.Driver”;
//数据库连接地址
private String url=“jdbc:mysql://localhost:3306/orcl”;
//数据库用户名
private String name=“root”;
//数据库密码
private String password="";public Connection conn;//数据库连接对象
public PreparedStatement ps;//数据库操作对象
public ResultSet rs;//存放结果数据/**
- 获取数据库连接
*/
public Connection getConn(){
try {
Class.forName(driver);
this.conn=DriverManager.getConnection(url,name,password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) throws Exception {
//1. 获取连接
Connection conn=new BaseDao().getConn();
//2. 执行查询
String sql=“select * from k_user”;
PreparedStatement ps=conn.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
//3. 循环输出数据
while(rs.next()){
System.out.println(“用户名是:”+rs.getString(“username”));
}
} - 获取数据库连接
}