面向过程

面向过程和面向对象,都是一种设计思想

面向过程:侧重于实现的具体过程,主要设计到方法(函数)

面向对象:面向对象是将问题转行成谁做什么事情(对象干什么)

怎么将大象放进冰箱?

面向过程:

1、开冰箱门

2、把大象塞进去

3、关冰箱门

面向对象:

存在哪些对象(事物)

冰箱、大象、人

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
冰箱(){

冰箱门打开(){}

冰箱门关闭(){}

}

人(){

打开冰箱门(){}

赛大象(){}

关闭冰箱门(){}

}

大象(){

喊救命(){}

}

具体过程:

人.打开冰箱门(){}

人.塞大象(){}

人.关闭冰箱门(){}

面向对象

面向对象编程(Object-Orientend Programming,OOP)本质是:以类的方式组织代码,以对象的形式(封装)数据

类(class):类是对一类事物的一个抽象定义

对象(Object):对象是一类事物的具体表现

手机:小米,华为,oppo

电脑:联想,华为,华硕,戴尔

人:亚洲人,非洲人,欧洲人…

类的定义

1
2
3
4
5
public class 类名{
//属性(变量)

//行为(方法)
}

类中的属性和行为具体要看怎么设计,并不是必须要包含。

对象创建

1
2
3
//语法
类名 变量名 = new 类名();
Person p = new Person();

属性和方法的使用

访问&修改属性

1
2
对象.xxx;
对象.xxx = yyy;

方法的调用

1
对象.方法();

内存分析

再看方法

方法的重载

方法的重载:方法的参数列表不一样(类型或个数),方法名一样

1
2
3
4
5
6
7
8
9
10
11
public void jia(int x,int y) {
System.out.println(x + y);
}

public void jia(float x,float y) {
System.out.println(x + y);
}

public void jia(double x,double y) {
System.out.println(x + y);
}

传值&传引用

传值:方法的参数为基本数据类型,方法中所有进行的更改不会影响原来的实参

传引用:方法的参数为引用类型,若在方法中更改了引用对应的对象,那么在其他地方在去访问对象是,里面的数据将会有变化

public class Test5 {

    int x;

public static void main(String[] args) {		
    Test5 t = new Test5();
  
    int a = 10;
    t.f1(a);
    System.out.println("main:" + a);
    
   /**********************************/
    t.x = 100;
    System.out.println(t.x);
    
    t.f2(t);
    System.out.println("main:" + t.x);
}
// 传引用
public void f2(Test5 t) {
    t.x = 200;
    System.out.println("f2:" + t.x);
}

// 传值 
public void f1(int a) {
    a++;
    System.out.println("f1:" + a);
}
}

构造方法

1
2
3
4
5
// 构造方法语法:

public 类名([参数列表]){

}
  1. 构造方法可以用来创建对象
  2. 带参构造方法可以在创建对象时,通过传入参数将对象的属性进行初始化
  3. 一个类中若没有显示的定义任何构造方法,那么系统将会自动添加一个无参构造方法;
  4. 若手动定义了一个带参构造方法,但是没有定义无参构造方法,那么类的无参构造方法将会被带参构造方法所覆盖