实训0710

# 面向对象

## 如何打开md文件

1、VSCode,预览窗口可以
2、IDEA
3、Typora

## 类和对象

类 一个模板,一类东西共有特征的抽象

属性
当变量写在类的语句块中时,可以认作是属性描述某种类型的信息

方法

类的行为,能做的事情

```java
<修饰符> <返回类型> <方法名>([参数列表]){
    // 方法体
    [return 语句]
}

public int calcAge(int currentAge){
    return currentAge + 1;
}

public void printInfo(){
    User user = getFromDatabase(1);
    System.out.println(user.getName());
}
```

 



## 封装

把类的某些特征隐藏起来,保证数据正确和安全

## 对象

对象是类的实际实现,是具体的实例

```java
Person p = new Person();

 

```

## 构造器 Constructor


构造对象用的代码块

默认构造器,如果一个类没有提供任何构造器,系统会分配一个。
如果一个类有其他带参的构造器,且还想用无参构造器(默认构造器),那么无参构造器必须要显式声明。

```java
public class Person{

    // 默认构造器
    public Person(){
   
    }
}

 

```

类和类的关系


### has-a

一个类成为另一个类的属性

### use-a

一个类作为另一个类方法参数

### is-a

继承


## 继承

单继承

父类中所有非私有成员都能被子类继承

访问范围

 
类本身
同包 有继承关系  所有类
provate Y N N N
不写 Y Y N N
protected Y Y Y N
public Y Y Y Y
 

### 方法覆盖

子类和父类可能有同样的行为特征,但行为的具体内容不一样,可以使用方法覆盖Override,也叫重写

1、方法名、参数列表、返回类型必须相同  
2、子类覆盖父类方法的时候,子类方法的访问范围不能比父类访问范围小

## 多态 Polymorphism

多种状态

类型多态

```java
Employee emp = new Manager();

 

```

虚拟方法调用:  
能调啥,看左边,做了啥,看右边

异类集合

### 方法重载 Overload

对象有一系列相同的行为,但处理的内容不同

1、方法名相同,参数列表必须不同(类型不同)  
2、返回类型可以不同

#### 可变参数

```java
public void eat(String... foods) {
    System.out.print("准备吃:");
    for (String food : foods) {
        System.out.print(food + "、");
    }
}

 

```
一个方法只能有一个可变参数,且可变参数必须在参数列表最后
posted @ 2024-07-16 18:58  咕嘎咕咕  阅读(19)  评论(0)    收藏  举报