参考教学视频:秦疆
Day3
面向对象
什么是面向对象
面向过程:第一步做什么,第二步做什么
面向对象:分类的思维模式,分类然后对某个分类下的细节进行面向过程的思索(以类的形式组织代码,以对象的方式组织(封装)数据)
static:和类一起加载
构造器
-
必须和类的名字相同
-
必须没有返回值类型,也不能写void
public class person(){
public person(){}
}
-
实例化对象
-
定义有参构造,显示定义一个无参构造
-
使用new关键字,本质是在调用构造器
封装(高内聚,低耦合)
封装(数据的隐藏):通常,应禁止直接访问一个对象中数据的实际表示,而应通过接口来访问,这称为信息隐藏
属性私有,get/set
意义
-
提高安全性,保护数据
-
隐藏代码实现细节
-
统一接口
-
增加系统可维护性
继承
本质是对某一批类的抽象,Java中只有单继承
super:访问父类属性、方法,调用父类的构造器必须在子类的构造器的第一行
方法重写(@override)
非静态方法,子类继承父类,重写父类方法
-
方法名,参数列表必须相同
-
参数列表必须相同
-
修饰符范围可以扩大但不能缩小
-
抛出的异常范围,可以缩小但不能扩大
静态方法的调用只和左边,定义的数据类型有关
多态
*动态编译
-
同一方法可以根据发送对象的不同而采用不同的行为方式
-
一个对象的类型是确定的,但可以指向对象的引用的类型有很多
多态存在的条件
-
有继承关系
-
子类重写父类方法
-
父类引用指向子类对象
多态是方法的多态,属性没有多态性
instanceof和类型转换
obj instanceof String //false 是否存在父子关系
-
父类引用指向子类的对象
-
把子类转换为父类,向上转型
-
把父类转换为子类,乡下转型;强转
-
方便方法的调用,减少重复的代码
static关键字
static和类加载时同步生成
import static java.lang.Math.random
public class test(){
public staitc void main(){
random();
}
}
抽象类
abstract关键字
extends关键字
接口实现多继承
-
抽象方法,只有方法的名字,没有方法的实现
-
不能new抽象类,只能靠子类实现
-
抽象类里面可以写普通方法,抽象方法必须在抽象类中
public abstract void doSomething();
接口的定义和实现
interface关键字
implements关键字
-
只有规范。约束和实现分离:面相接口编程
-
接口中的所有定义都是抽象的
-
接口中定义的都是常量public static final
-
接口不能实例化,里面没有构造方法
-
implements可以实现多个接口
public abstract void run();
内部类
一个java类中可以有多个class类,但只能有一个public class
-
成员内部类 通过外部类来实例化内部类
-
静态内部类
-
局部内部类 方法中定义
-
匿名内部类 不用将实例保存到对象中new Apple.eat();
异常
-
异常指程序运行中出现的各种不期而至的情况,如:文件找不到、网络连接失败、非法参数等
-
异常发生在程序执行期间,影响了正常的程序执行流程
-
检查性异常
-
运行时异常
-
错误ERROR:错误不是异常,而是脱离程序员控制的问题
异常处理
try、catch、finally、throw、throws
try{
System.out.println(1/0);
}catch(ArithmeticException e){
}finally{
}
自定义异常
继承Exception类
public class MyException extends Exception(){
private int detail;
public MyException(int a){
this.detail = a;
}
@Override
public String toString(){
return "NUM Exception";
}
}
static void test(int num) throws Exception{
if(num >10){
throw new MyException(num);
}
}
public static void main(String[] args){
try{
test(11);
}catch(MyException e){
System.out.println("Exception Info:"+e);
}
}
Day4
常用类
-
Object类:hashcode(),toString(),clone(),getClass(),notify(),wait(),equals()
-
Math类:常见的数学运算
-
Random:生成随机数、UUID
-
File类:创建文件、查看文件、修改文件、删除文件
-
包装类:自动装箱和拆箱
-
Date类:Date,simpleDateFormat,Calender
-
String类:不可变性final(操作量较少)
-
StringBuffer:可变长(多线程大量数据)
-
StringBulider:可变长(单线程大量数据)
集合框架
-
Collection:List(ArrayList,LinkedList)、Set(HashSet,TreeSet)、Vector、Stack
-
Map:(HashMap,TreeMap)
-
泛型
IO流处理
-
字节流:OutputStream、InputStream
-
字符流:Reader、Writer
-
节点流:CharArrayReader、StringReader、pipe(管道流)、PipedOutputStream
-
处理流:序列化、Buffer、Data、转换流、Filter、Print