面向对象(类与对象)

Java语言是一种面向的程序设计语言,而面向对象思想是一种程序设计思想。我们参照面向对象思想使用java语言去设计,开发计算机程序。

除去面向对象之外还有一个面向过程。

区别:

  • 面向过程:当要实现一个功能的时候,面向过程,要处理好每一个节点,直至整个过程结束,然后得到结果。
  • 面向对象:当要实现一个功能的时候,直接去调用一个关于这个功能相关的类,把过程交给其他类来处里,自己等着获取结果
  • 面向过程强调这功能的步骤,面向对象强调这功能的结果。

举例:

  • 面向过程:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉一揉-->清洗衣服-->拧干-->晾起来

  • 面向对象:把衣服脱下来-->打开全自动洗衣机-->扔衣服-->按钮-->晾起来

特点:

      面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。面向对象的语言中,包含了三大基本特征,即封装、继承和多态。

什么是类:

          类是对一种具有类似的属性和行为的事物的集合。eg:学生类,教师类等等。学生有相同的属性:学生证号,姓名等等,有相同的行为:做作业,写卷子等等。

现实中:

  • 属性:就是该事物的状态信息。
  • 行为:就是该事物能够做什么。

什么是对象:

          是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。比如学生类中的张三是一个学生,那么张三就是一个对象,他具有学生证号,姓名等属性,也具有做作业,写卷子等行为

类与对象的关系:

  • 类是对一组事物的统称描述,类似抽象的,它看不见摸不着   eg: 比如手机类是手机的统称,它有一系列的属性比如颜色,配件等等,行为是
  • 对象是一组事物的实例,是具体的,是真正存在的可以看得见摸得着 eg:  你买的一个小米9手机是一个实实在在的东西,就属于一个对象 

类的定义:

访问权限修饰符 class 类名 {
      //成员变量
     //成员方法
}

对象的定义:类名 对象名 = new 类名();

类与对象的练习:

public class OverloadDome03 {
    // 定义一个求和 工具类
    
    /* 定义sum方法两个sum(int,int) 并返回值*/
    public int sum(int a,int b) {
        return a+b;
    }
    
    /* 定义sum方法两个sum(int,int,int) 并返回值*/
    public int sum(int a,int b,int c) {
        
        return a+b+c;
    }
    
    /* 定义sum方法两个sum(double,double) 并返回值*/
    public double sum(double a,double b) {
        return a+b;
    }
    
    /* 定义sum方法两个sum(int,double) */
    public void sum(int a,double b) {
        System.out.println(a+b);
    }
}


public class OverloadDome03Test {
        /* 求和测试类 */
    public static void main(String[] args) {
        OverloadDome03 ov03 = new OverloadDome03();//实例化OverloadDome03
        
        double sum = ov03.sum(0.0, 1.293);    //调用sum(double,double)f方法  并打印
        System.out.println(sum);
        
        int sum1 = ov03.sum(1,2);            //调用sum(int,int)f方法  并打印
        System.out.println(sum1);
        
        ov03.sum(12,19.22);                  //调用sum(int,double);
        
        int sum2 = ov03.sum(1,2,3);         //调用sum(int,int,int)f方法  并打印
        System.out.println(sum2);
    }
}

方法定义:

语法:

访问权限修饰符 静态修饰符 返回值类型 方法名(参数类型 参数名,参数类型 参数名...){
  执行代码...
  return 返回语句;

成员变量和局部变量:

在之前的个工作中,我们学习了怎么去定义变量,变量又分为成员变量(又叫全局变量)和局部变量。下面直接说区别吧。

  1. 位置不同:全局变量定义在类之内,方法之外;局部变量定义在方法之内。
  2. 作用域不同:全局变量作用于整个类中;局部变量作用于单个方法之中。
  3. 初始化不同:全局变量可以不用初始化赋值就可以使用;局部变量若要使用必须先初始化然后才能使用。
  4. 内存位置不同:全局变量存储在堆内存,局部变量存储在栈内存。
  5. 生命周期不同:全局变量随对象的创建而存在,随对象的销毁而消失。局部变量随方法的调用而创建,方法结束而消失。

下面简单的定义一下:

public class VariableDome01 {
    int j; // 定义一个全局变量j

    public void test1() {
        int i = 1;      //定义一个局部变量i并赋值i 
        System.out.println(j+i);   //假若i没有赋值将无法使用
    }
}

//测试
public class VariableDome01Test {
    public static void main(String[] args) {
      VariableDome01 variableDome01 = new VariableDome01();
      variableDome01.j=1;   //测试中可以直接给j赋值却不能为i赋值因为i只作用于VariableDome01中test1方法中
      variableDome01.test1();  //调用后打印为2
    }
}

方法重载:

概念:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。

  • 多个方法在同一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不相同,类型不同或者数量不同
  • 参数列表:个数不同,数据类型不同,顺序不同。

如下有几个方法,可以看看重载方法有几个:

public static void method(){}
public static void method(int a){}
static void method(int a,int b){}
public static void method(double a,int b){}
public static void method(int a,double b){}
public void method(int i,double d){}
public void method(){}
public static void method(int i,int j){} 

我简略的分析一波=-=我比较菜

 

个人学习,内容简略。

 

posted @ 2020-07-25 19:12  一生的风景  阅读(622)  评论(0编辑  收藏  举报