发表于: 2020-04-18 00:44:47
2 1577
学习内容
通过昨日的学习,发现自己对Java的基础语法了解的还是太少,尤其是面向对象编程这块知识不够,导致,看别人的程序都看不太懂,因此,今天先暂停下面的任务,继续补习Java面向对象编程相关的知识。
方法的重写
package com.test;
public class HelloWorld {
public HelloWorld() {
System.out.println("you got me");
}
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
}
}
会输出结果
类在引用时会执行一遍同名构造方法
在Java中,没有明确写extends
的类,编译器会自动加上extends Object
。所以,任何类,除了Object
,都会继承自某个类
instanceof
实际上判断一个变量所指向的实例是否是指定类型,或者这个类型的子类。如果一个引用变量为null
,那么对任何instanceof
的判断都为false
。
利用instanceof
,在向下转型前可以先判断:
Person p = new Student();
if (p instanceof Student) { // 只有判断成功才会向下转型:
Student s = (Student) p; // 一定会成功
}
继承是面向对象编程的一种强大的代码复用方式;
Java只允许单继承,所有类最终的根类是
Object
;protected
允许子类访问父类的字段和方法;子类的构造方法可以通过
super()
调用父类的构造方法;可以安全地向上转型为更抽象的类型;
可以强制向下转型,最好借助
instanceof
判断;子类和父类的关系是is,has关系不能用继承。
关键词new的用法:
如 Student s=new Student(); 的作用就是
1.加载Student.class文件进内存。
2.在栈内存为s开辟空间
3.在堆内存为学生对象开辟空间
4.对学生对象的成员变量进行默认初始化
5.对学生对象的成员变量进行显示初始化
6.通过构造方法对学生对象进行成员变量赋值
7.学生对象初始化完毕,把对象变量赋值给s变量
说这么多,总结下来就是:
1.Java关键字new是一个运算符。与+、-、*、/等运算符具有相同或类似的优先级。
2.创建一个Java对象需要三部:声明引用变量、实例化、初始化对象实例。
3.实例化:就是“创建一个Java对象”-----分配内存并返回指向该内存的引用。
4.初始化:就是调用构造方法,对类的实例数据赋初值。
原文链接:https://blog.csdn.net/LOL_toulan/java/article/details/89212383
继承是实现多态的基础
多态不能调用子类独有的方法
抽象类
如果一个class
定义了方法,但没有具体执行代码,这个方法就是抽象方法,抽象方法用abstract
修饰。
因为无法执行抽象方法,因此这个类也必须申明为抽象类(abstract class)。
使用abstract
修饰的类就是抽象类。我们无法实例化一个抽象类:
Person p = new Person(); // 编译错误
接口
Java的接口(interface)定义了纯抽象规范,一个类可以实现多个接口;
接口也是数据类型,适用于向上转型和向下转型;
接口的所有方法都是抽象方法,接口不能定义实例字段;
接口可以定义default
方法
DAO
DAO(Data Access Object)是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。
JDBC的增删查改
package com.itxzy.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo1 {
public static void main(String[] args) {
//声明Connection对象
Connection con;
//驱动程序名
String driver = "com.mysql.jdbc.Driver";
//URL指向要访问的数据库名
String url = "jdbc:mysql://localhost:3306/sqltestdb";
//MySQL配置时的用户名
String user = "root";
//MySQL配置时的密码
String password = "root";
//遍历查询结果集
try {
//加载驱动程序
Class.forName(driver);
//1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url,user,password);
if(!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
//2.创建statement类对象,用来执行SQL语句!!
Statement statement = con.createStatement();
//要执行的SQL语句
String sql = "select * from emp";
//3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("执行结果如下所示:");
System.out.println("-----------------");
System.out.println("姓名" + "\t" + "职称");
System.out.println("-----------------");
String job = null;
String id = null;
while(rs.next()){
//获取stuname这列数据
job = rs.getString("job");
//获取stuid这列数据
id = rs.getString("ename");
//输出结果
System.out.println(id + "\t" + job);
}
rs.close();
con.close();
} catch(ClassNotFoundException e) {
//数据库驱动类异常处理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
//数据库连接失败异常处理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("数据库数据成功获取!!");
输出结果
数据库连接池
实质就是一个存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
优点:
1.节约资源 2.用户访问高效。
实现:
1.标准接口:DataSource java.sql包里面的
2.一般我们不去实现它,由数据库厂商实现。 Durid 阿里的
Spring JDBC
Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发。
总结
这几天一直在看jdbc的操作,被其中的语法给难住了,别人用的语句都看不懂,更别说自己能写出来连接了,感觉还是得要先把Java基础给好好过一遍,再来做这些项目。
遇到的问题
Java的语法很成问题,这几天看的太多,感觉记住的不是很多。
明日计划
把任务17完成
评论