JAVA语言学习-Day3

参考教学视频:秦疆

Day3

面向对象

什么是面向对象

面向过程:第一步做什么,第二步做什么

面向对象:分类的思维模式,分类然后对某个分类下的细节进行面向过程的思索(以类的形式组织代码,以对象的方式组织(封装)数据)

static:和类一起加载

构造器

  • 必须和类的名字相同

  • 必须没有返回值类型,也不能写void

public class person(){
   public person(){}
}
  1. 实例化对象

  2. 定义有参构造,显示定义一个无参构造

  3. 使用new关键字,本质是在调用构造器

封装(高内聚,低耦合)

封装(数据的隐藏):通常,应禁止直接访问一个对象中数据的实际表示,而应通过接口来访问,这称为信息隐藏

属性私有,get/set

意义

  1. 提高安全性,保护数据

  2. 隐藏代码实现细节

  3. 统一接口

  4. 增加系统可维护性

继承

本质是对某一批类的抽象,Java中只有单继承

super:访问父类属性、方法,调用父类的构造器必须在子类的构造器的第一行

方法重写(@override)

非静态方法,子类继承父类,重写父类方法

  1. 方法名,参数列表必须相同

  2. 参数列表必须相同

  3. 修饰符范围可以扩大但不能缩小

  4. 抛出的异常范围,可以缩小但不能扩大

静态方法的调用只和左边,定义的数据类型有关

多态

*动态编译

  • 同一方法可以根据发送对象的不同而采用不同的行为方式

  • 一个对象的类型是确定的,但可以指向对象的引用的类型有很多

多态存在的条件

  1. 有继承关系

  2. 子类重写父类方法

  3. 父类引用指向子类对象

多态是方法的多态,属性没有多态性

instanceof和类型转换

obj instanceof String   //false 是否存在父子关系
  1. 父类引用指向子类的对象

  2. 把子类转换为父类,向上转型

  3. 把父类转换为子类,乡下转型;强转

  4. 方便方法的调用,减少重复的代码

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

  1. 成员内部类 通过外部类来实例化内部类

  2. 静态内部类

  3. 局部内部类 方法中定义

  4. 匿名内部类 不用将实例保存到对象中new Apple.eat();

异常

  • 异常指程序运行中出现的各种不期而至的情况,如:文件找不到、网络连接失败、非法参数等

  • 异常发生在程序执行期间,影响了正常的程序执行流程

  1. 检查性异常

  2. 运行时异常

  3. 错误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

posted @ 2024-04-04 17:37  孟秋廿六  阅读(7)  评论(0)    收藏  举报