0711实训

# 高级OOP

## 抽象类和接口

### 抽象类
描述抽象概念的类,不能被实例化,可以含有抽象方法

```java
// 抽象类
public abstract class ClassName{

    // 抽象方法
    public abstract Object doSomething(String arg);
}
```

### 接口

描述某种类能够做的事情

接口中不能有一般属性,接口中的成员“变量”都是public static final的

#### static

被static标记的变量、方法,不从属于某个对象,是某种类型共享的。不需要实例化后使用。翻译成“静态”
```java
public class Animal{
    public static int something;
    public static void doSomething(){
        ....
    }
}

// 调用
int x = Animal.something;
Animal.doSomething();
```
#### final

被final标记的变量是常量  
被final标记的方法不能被覆盖  
被final标记的类不能被继承

### 抽象类和接口的相同和区别

相同点:都不能被实例化,必须要被继承或被实现

不同点:  
抽象类表示是什么,接口表示能做什么  
抽象类中可以有普通方法、属性、构造器  
接口只能是公开的静态常量、公开的抽象方法、默认实现(1.8)  
抽象类只能单继承,接口可以多实现

接口继承接口使用extends,可多继承

## 常用类

### java.lang.Object

所有类的父类

#### toString()方法

可以直接转换成String,通过System.out.println打印,便于调试

#### equals()和hashCode()方法

## 集合

### Wrapper类

装箱Boxing:基本数据类型转换成引用类型
拆箱UnBoxing:引用类型转换成基本数据类型

```java
int a = 10;
Integer aa = 10; // 自动装箱
int bb = aa; // 自动拆箱

String str = "Hello"+10; // 广义上的装箱
String aStr = "10";
int x = Integer.parseInt(aStr); // 广义上的拆箱

 

```

byte Byte  
short Short  
int Integer  
long Long  
char Character  
boolean Boolean  
float Float  
double Double

### Collection

#### Set

元素不重复(equals为true即认为重复)

元素顺序和添加顺序无关

#### HashSet

顺序和Hash值有关

#### TreeSet

会有一个排序比较,元素必须实现Comparable接口,例如String类、Integer类

#### List

元素可以重复,元素顺序和添加顺序有关

#### ArrayList

使用最广

#### Vector

跟ArrayList类似,线程安全

#### 集合常用方法

```java
boolean add(E obj) // 添加元素
boolean remove(E obj)  // 移除元素
boolean removeAt(int index) // 移除指定位置的元素
E get(int index)  // 获取指定位置的元素
int size() // 获取集合大小
Stream stream() // 转换成流

 

```

### Map

key value存储

#### HashMap

key 和 value可以为null

#### Hashtable

key 和 value不可以为null
posted @ 2024-07-16 22:51  咕嘎咕咕  阅读(6)  评论(0)    收藏  举报