# 面向对象
> ***面向对象编程的本质就是:以类的方式组织代码,已对象的形式封装(组织)数据。***
## 三大特性
- 封装
- 继承
- 多态
## 方法的调用
~~~java
public class mothod {
//非静态方法
public void test01(){
System.out.println("迟到了!");
}
//静态方法
public static void test02(){
System.out.println("迟到了!");
}
}
~~~
~~~java
public class use {
//调用
public static void main(String[] args) {
//非静态
//实例化这个类
mothod s=new mothod();
s.test01();
//静态
mothod.test02();
}
}
~~~
## 值传递
***传递的是一个值。***
![image-20211027185540681](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211027185540681.png)
## 引用传递
***传递的是对象,本质还是传递值。***
![image-20211027190630660](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211027190630660.png)
## 构造器
~~~java
public class Demo01 {
//一个类什么都不写,他也会存在一个方法----->构造器
String name;
//构造器
//实例化初始值
//无参构造
public Demo01(){
this.name="qinjiang";//name初始化值变为qinjiang
}
}
~~~
~~~java
public class Application {
public static void main(String[] args) {
Demo01 s=new Demo01();
System.out.println(s.name);
}
}
~~~
![image-20211027192807728](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211027192807728.png)
***作用:***
1. 使用new关键字,本质是在调用构造器。
2. 用来初始化值。
### 有参构造
~~~java
public class Demo02 {
String name;
//构造器
//实例化初始值
public Demo02(){}
//有参构造
//一旦有了有参构造,无参构造就无法显示定义。
public Demo02(String name){
this.name=name;
}
}
~~~
~~~java
public class Application {
public static void main(String[] args) {
Demo02 x=new Demo02();
System.out.println(x.name);
}
}
~~~
![image-20211027194302602](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211027194302602.png)
### 快捷键
- alt+insert
### !
- 构造器不写也行会有默认构造器。
- 沟造器方法名必须和类名相同。
- **没有返回值。**
- 定义有参构造后,还想使用无参构造,一定要写一个无参构造。
- this.表示当前类
## 属性
默认初始化:
- 数字: 0 0.0
- char: u0000
- boolean: false
- 引用: null
## 封装
- 属性私有get/set
封装的意义:
- 提高了代码的安全性,保护数据
- 隐藏代码实现细节
- 统一接口
- 系统可维护性增加了
~~~java
//属性私有
private String name;//名字
private int id;//学号
private char sex;//性别
private int age;//年龄
//get获取这个数据
public String getName(){
return this.name;
}
//set给这数据设置值
public void setName(String name ){
this.name=name;
}
//快捷键alt+insert自动生成方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age>130||age<0){
System.out.print("你个**");
}else {
this.age = age;
}
}
~~~
~~~java
//主函数
Student s1 = new Student();
s1.setName("qin");
System.out.println(s1.getName());
s1.setAge(500);
System.out.println(s1.getAge());
~~~