1.类和对象
-
类:类是一组具有相同属性和行为的对象的集合
-
对象:对象是符合某类标准的实实在在存在的个题或实体,具有属性和行为
-
类和对象的关系
-
类是抽象的概念,是用来创造对象的,是模板
-
对象是具体的概念,是符合某类标准的一个实体
-
2.面向对象思想的三大特征
-
封装:属性私有,方法公有,方法中的业务逻辑也封装起来,对外通讯提供getter和setter方法
-
封装的步骤
-
属性私有化
-
提供getter和setter方法
-
在getter或setter方法中加入控制语句
-
-
-
继承:在原有类的基础上定义新类,将重复的属性和方法单独放在一个类中,称为父类,其他类用extends关键字继承父类,称为子类
-
一个类只能继承一个父类,可以拥有多个子类,java是单继承的语言
-
子类拥有父类的属性和方法,子类可以拥有自己的属性和方法,子类可以重写父类的方法
-
声明父类,创建子类对象,在调用被重写的方法时,调用的是子类重写后的内容
-
Pet pet = new Dog();
-
-
三种情况子类无法继承
-
父类中访问修饰符为private的成员
-
父类的构造方法(因为不能继承,所以也不能重写)
-
子类和父类不在一个包下,父类中默认访问权限的成员子类不可继承
-
-
-
多态:重载和重写
3.构造方法
-
特点:
-
名称和类名相同
-
没有返回值,也没有void关键字,直接public + 类名
-
通过new调用
-
系统会默认提供一个无参的构造方法
-
可以有多个,但是如果显示定义了构造方法,系统不再提供默认的无参构造方法
-
-
分类:
-
隐式构造方法
-
显示构造方法
-
4.重载和重写
位置 | 访问修饰符 | 返回值类型 | 方法名 | 参数列表 | |
---|---|---|---|---|---|
重载 | 同一个类中 | 无关 | 无关 | 相同 | 不同 |
重写 | 子类重写父类 | 不能比父类更严格 | 相同 | 相同 | 相同 |
5.static
-
类级别的,静态的,可以修饰成员变量、成员方法、内部类、初始化块
-
为什么使用static
-
因为有些变量不属于对象个体,而是属于整个类,是所有对象共享的,这一类变量我们要声明为static,静态的
-
-
特点
-
被static修饰的成员随着类的加载就存在了,对象是需要通过类名来创建,所以static修饰的成员优先于对象的存在
-
static修饰的成员可以通过类名访问,普通的成员只能通过对象来引用
-
因为static修饰的优先于对象存在,所以在普通的方法中可以访问静态成员,静态方法中不可以访问普通的成员
-
static不能修饰局部变量
-
6.final
-
最终的、最后的、不可改变的,可以修饰成员变量、局部变量、成员方法、类
-
final修饰成员变量时,必须给定初值,值不可改变
-
final修饰局部变量时,可以不给初值,但是一旦赋值后,值不可改变
-
final修饰的方法不能被重写
-
final修饰的类不能被继承 String类能被继承吗? 不能
-
final Student student = new Student(1,"张三");
-
student = new Student(2,"李四");//错
-
student.name = "李四";
-
7.定义常量
-
public static final String SCHOOL = "金桥";
8.this
-
这个,在项目中一般表示当前对象
-
this后面跟小括号,代表调用这个类的其他构造方法,必须放在构造方法的第一句
-
this后面跟圆点,代表对象引用,说的是调用这个对象的成员变量或方法
-
如果局部变量和成员变量不重名,this可以省略
9.super
-
子类中用super访问父类的属性或方法,主要区别该成员是父类的还是自己的
-
super后面跟小括号,代表调用父类的构造方法,必须放在构造方法的第一句,所以super和this不共存
-
super后面跟圆点,
10.访问修饰符
本类 | 同包 | 不同包子类 | 全部 | |
---|---|---|---|---|
private | √ | |||
默认的 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
11.抽象类和抽象方法
-
为什么使用抽象类
-
特点
-
用abstract修饰
-
抽象类不能被实例化,但是有构造方法
-
抽象方法没有方法体
-
抽象类可以没有抽象方法
-
如果一个类中有抽象方法,这个类一定是抽象类
-
继承自抽象类的子类必须实现抽象类中的抽象方法,或者将自己声明为抽象类
-
12.接口
-
为什么使用接口
-
特点
-
接口中之定义常量和抽象方法
-
常量的修饰符[public static final],默认,不需要写
-
抽象方法的修饰符[public abstract],默认,不需要写
-
接口没有构造方法,不能被实例化
-
implements,英文逗号
-
13.抽象类和接口的区别
-
语法角度
-
编程角度
-
问题域角度
14.异常
-
五个关键字
-
try
-
catch
-
finally try中出现return,在return语句执行之后,返回之前执行
-
final finally finalize的区别
-
-
-
throws
-
throw throw new Exception("异常信息");
-
常见的异常
-
日志工具:log4j
15.集合Collection
-
list接口
-
ArrayList
-
LinkedList
-
常用方法:
-
-
set接口
-
HashSet 自己了解
-
TreeSet
-
16.Map
-
键值对
-
HashMap,key和value都可以为空,key不能重复,重复出现覆盖现象,value可以重复
-
方法
-
-
TreeMap
17.遍历集合的三种方式
-
fori
-
foreach
-
迭代器:
-
Iterator<Emp> i = list.iterator();
-
hasNext()
-
next()
-
-
会写代码
18.泛型
-
为什么要用泛型
-
泛型的作用
-
用法
19.Collections
-
sort()
-
reverse()
-
addAll()
20.jdbc
-
jdbc连接数据库的步骤
-
代码会写
-
加载驱动程序
-
获取数据库连接对象
-
url
-
username
-
password
-
-
编写sql
-
获取执行sql的Statement对象(PreparedStatement对象)
execute() boolean
executeQuery()
executeUpdate()
-
得到结果集
next()
getInt() ---number (Oracle) ---int(Mysql)
getString()
-
关闭资源
close()
-
-
事务
-
批量操作
21.dao(data access object)数据访问对象
22.各个包的作用
23.数据结构
24.输入输出流
-
数据存储状态
-
I/O
-
数据流
-
字节流
-
字符流
-
-
File文件类
-
创建文件
-
常用方法
-
25.多线程
-
两种创建方式
-
继承Thread类
-
实现Runnable接口
-
-
优先级
-
方法
-
join()
-
sleep(毫秒)
-
yield()
-
-
对象的监视锁
-
synchronized
-
wait()
-
notify()
-
notifyAll()
-
线程的声明周期
26.Socket
-
java.net.Socket 客户端
-
java.net.ServerSocket 服务端
-
多人聊天:所有客户端连接服务端,服务端将客户端连接起来