首页 > 代码库 > 使用Java实现面向对象编程(12)

使用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快速高效制作网页交互特效

欢迎关注、评论,谢谢了!!!

使用Java实现面向对象编程(12)