面 向 对 象

面向对象

面向对象和面向过程

  • 面向对象面向过程都是程序设计的一种思想(风格):

    1. 面向过程(POP)的思想就是分析步骤,将冗余的过程抽取为一个函数,以便于维护,侧重于分析步骤。适合简单问题

    2. 面向对象(OOP)的思想是以类为组织单位,且每种事物均有其自身的功能。(类:一类问题/分类 如String、Math、Arrays、Scanner)适合复杂问题。

      形象化例子:

      动物类{
      动物共有属性与功能(代码复用)
      }
      猫 继承 动物{
      定义自己特有的属性与功能(扩展自己的功能)
      }
      狗 继承 动物{
      定义自己特有的属性和功能(扩展自己的功能)
      }
      

    :现在大多数程序的设计中,两种方法均需要使用,所以不要把两种方法对立起来。面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。

类和对象

具有相同特征事物的抽象描述,是抽象的、概念的定义。

类的结构:
  1. 变量:事物属性的描述
  2. 方法:事物的行为
  3. 构造方法:初始化对象
  4. 块:一段没有名称的代码块
  5. 内部类:在类体中声明的类(嵌套)
定义类:
public class Car{
String name;
String color;
float price;//成员变量,在类中定义
public void start(){
System.out.println("汽车启动");
}
public void close(){
System.out.println("汽车关闭");
}
}
使用类:
public static void main(String[] args){
Car car=new Car();//Car(类型)car(变量名)声明一个Car类型的变量
car.name="benchi";
car.color="red";
car.price=11000;
car.start();
car.close();
}

对象:

实际存在的该类事物的每个个体,是具体的,也称为实例。

例如:

人类--->一类群体,概念
张三--->具体的事物,对象

电脑--->一类电脑
我的电脑--->可以使用的,具体,对象

变量的种类

变量按照类型分:
  • 基本数据类型(8种);

  • 引用数据类型

变量按照位置分:
  • 成员变量(全局变量)(在类中定义):

    成员变量未人为初始化的情况下,系统会自动给其赋值为初始值(引言数据类型初始值为null,基础数据类型初始值为0)

  • 局部变量(在方法中定义):

    java的局部变量则必须在使用前对其初始化。

例1(全局变量):

//全局变量
public class test {
    static String a ;
    public static void main(String[] args) {
        System.out.println(a);//此时a未初始化
    }
}

运行结果1:全局变量自动初始化

在这里插入图片描述

例2(成员变量):

public class Car {
    String name;
    String color;
    float price;
}//定义的类
//成员变量
public class cardemo {
    public static void main(String[] args){
        Car car=new Car();
        System.out.println(car.name);
        }
     }

运行结果2:成员变量被自动初始化为null

在这里插入图片描述

例3(局部变量):

public class test {
    public static void main(String[] args) {
        String a ;
        System.out.println(a);
    }
}

运行结果3:报错

在这里插入图片描述

:方法是类中的功能。

​ 类中的成员变量和成员方法都必须通过创建出来的对象去调用

构造方法

  • 定义:名字与类名相同没有返回值且不需要void修饰。
  • 格式如下:

(1)两种构造方法格式对比:

public car(){
    name=null;
    color=null;
    price=0;
}//无参构造方法
public car(String m,String.n,float c){
    name=m;
    color=n;
    price=c;
}//有参构造方法

(2)两种方法赋值格式对比:

car.name="宝马";
car.color="black";
car.price=20000000;//无参构造方法的赋值
Car car=new Car(m:"宝马",n:"black",c:20000000);//有参构造方法的赋值
  • 特点:

    (1)类中没有定义时,会默认有一个无参的构造方法。

    (2)在无参的构造方法中为成员变量赋初始值,还可以定义有参的构造方法,通过有参的构造方法为成员变量进行初始化赋值。

    (3)一旦类中定义了有参的构造方法,那么默认都无参构造方法便会失效。

  • 作用:用来为新创建的对象中的成员变量进行初始化。

方法的重载

在一个类中有多个方法名相同,但参数个数不同的方法,称为方法的重载

  • 特点

    (1)可以通过参数个数,数据类型,顺序来区分。

    (2)方法重载跟返回值没有关系,不能通过返回值来区分。

  • 意义:做同一件事,但是可以传入不同的参数以进行不同的处理。

对象与引用

  • 创建对象:
Car bm=new Car();//左边是对象引用变量,右边是对象本身。

public class demo {
    public static void main(String[] args) {
        Car car=new Car("宝马","black");
        System.out.println(car.name+car.color);
        Car car1=new Car(4000,"black");
        System.out.println(car1.price+" "+car1.color);
        Car car2=new Car("宝马2","white");
        car2=car;//将car2的地址指向car
        System.out.println(car2.name+car2.color);
        System.out.println(car.name+car.color);//1.car和car2中成员变量数据一样
        car.color="red";
        car.name="小车";
        System.out.println(car.name+car.color);
        System.out.println(car2.name+car2.color);//2.car和car2中任一一个成员变量改变数据,另一个也随之改变
        car2.name="大车";
        car2.color="orange";
        System.out.println(car.name+car.color);
        System.out.println(car2.name+car2.color);//同2.
    }
}
  • 参数传递:

    (1)值传递(形参类型是·基本数据类型):传值。方法形式中形式参数值的改变不影响实际参数的值。

    (2)引用传递(形参类型是引用数据类型):传地址。方法执行中形式参数的改变会影响实际参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值