使用Java实现面向对象编程(12)
这里是对之前的总结:
1-4:
封装:
1.现实世界中抽象出类:
a.发现一个物体----》类
b.从物体上寻找它的属性---》属性
c.从物体上寻找它的行为---》方法
2.new
在java语言中 当想要调用类中的方法OR属性 需要实例化这个对象
3.构造函数
a.public修饰 方法名和类名相同 没有返回
b.系统默认提供无参的构造
c.如果手动(强行)编写构造方法 系统提供的无参构造将消失
d.用来执行类中的属性初始化的操作
e.new 构造方法()
4.static
a.作用在属性 方法 static{}(静态块)
b.静态块内容什么时候会被执行:创建对象时 调用静态方法OR静态属性
c.类名.静态属性 类名.静态方法
d.用来完成静态属性的初始化操作
5.this
a.只能在本类中调用 本类中的属性 方法 构造
b.this.方法() this.属性
c.调用本类中的构造方法this() this(args)
d.this()只允许写到构造方法中 有且仅能出现在第一行
6.封装:
私有化类中的属性 公开出访问该属性的get set方法 (狭义封装)
继承:
1.关键字 extends
2.什么东西能被继承:
static F
private修饰 F
构造方法 F
final修饰的 F
3.访问权限
public 本类 T 子类 T 不同包 T
protected 本类 T 子类 T 不同包子类 T
默认的 本类 T 同包(无论是否是)子类 T
private 本类 T
4.super
a.在本类中调用父类的属性 方法 构造
b.super.方法() super.属性
c.super() 在子类的构造方法中调用父类的构造方法 有且仅能出现在第一行
*5. Father和 Son之间有继承关系;
public Father(){
print("father")
}
public Son(){
print("son")
}
Son s = new Son();
father son
**5+1
static{
print("father static")
}
public Father(){
print("father")
}
static{
print("son static")
}
public Son(){
print("son")
}
Son s = new Son();
父类静态块--》子类静态快 从上到下依次执行
父类构造 --》子类构造
*****面向对象 的 3大概念
多态
a.向上转型
父类 f = new 子类();
f.eat(); //子类
f.play(); xxx //无法调用子类的独有方法
b.向下转型
父类 f = new 子类();
子类 z = (子类)f;
z.eat() //子类
z.play(); //可以调用
instanceof:判定这个变量是否是某个对象类型(引用数据类型)
String str = "123";
if(str instanceof String){
print("string")
}else if(str instanceof int){
print("int")
}
接口
a.interface定义
b.接口中所有的方法全是抽象方法
c.接口中所有的变量都是静态常量 必须给与初始值
d.接口中有构造方法 (F)
抽象类中有构造方法 (T)
e.接口作为一套模板技术 方法更换实现
异常
1.英文exception
**2.
5种常见异常
NullPointerException
IndexOutOfBoundsException
ClassCastException 类型转换异常
ClassNotFoundException 找不到类异常
InputMisMatchException 输入不匹配异常
3.try catch finally throw throws
try:可能会出现异常的代码块 允许单独使用(不允许) 配合catch or finally 至少一个联合使用
catch:针对特定的异常 进行相应的处理 可以写多个(可以)
finally:无论是否出现异常 该代码一定会被执行
throw:在方法体内抛出一个异常的实例
throws:在方法头上 声明一个异常类型
4.运行时异常 checked异常
a.运行时异常不要求用户强制进行try catch处理
b.checked异常 必须进行异常处理
5.exception error区别
a.前者是程序中可以经过处理 促使程序能够正常运行
b.error程序无法通过处理代码去解决
****集合
80%
a. List Set是接口 (T)
List Set继承Collection接口 (T)
Map 继承 Collection接口 (F)
**b.Collection :不唯一 无序的对象
List: 不唯一 有序
Set: 唯一 无序
c.List list = new ArrayList();
a.基于对象数组实现的
b.存入对象 add()
c.长度 size()
d.获取元素 get(index) index从0开始
LinkedList list = new LinkedList();
a.基于链表实现
b.add() addFirst addLast
c size()
d.针对 集合中的头尾元素进行操作
前者遍历的效率高 后者增加和删除元素的效率高
d.Set set = new HashSet();
add()添加元素
get() 没有该方法
iterator可以进行迭代获取
e.Map map = new HashMap()
存取一组以键值对存在的对象
key:键 唯一 可以为null
value:值
get(key)--->value
**f.ArrayList Vector区别
1.前者线程不安全 后者安全
2.前者默认增长50% 后者1倍
3.前者重效率
HashMap HashTable区别
1.前者线程不安全 后者安全
2.HashMap 键值可以为null
HashTable 键值均不可以为null
g.iterator
next() hasNext()
h.泛型
1.集合中存入对象类型的限制
jdbc
1.加载驱动 建立连接 编写sql 执行sql 得到结果 关闭资源
2.Class.forName("sqlserverDriver")
Connection conn = DriverManager.getConnection
String sql = "";
Statement stmt = conn.createStatement()
stmt.executeUpdate(sql)//增删改 executeQuery(sql) //查询
3.PreparedStatement Statement区别
1.前者一般需要存在占位符 (?)
2.前者需要对站位符进行数据填充 pstmt.setxxx() 下表从1开始
3.执行sql 所用的方法不允许带参数的方法
4.前者执行效率高
数据访问层
dao层:实体类 dao接口 接口实现 工具类(**********BaseDao)
分层概念
1.下一层为上一层服务 下一层不能调用上一层的方法
I/O
1.流向
输入 :读
输出 :写
种类来分
字节流 字符流 缓冲流 二进制流
文件()File
好的,这里也结束了,接下去是 使用jQuery快速高效制作网页交互特效
欢迎关注、评论,谢谢了!!!