java学习笔记——类与对象

一、面向对象与面向过程

面向过程:分析问题所需要的步骤,将实现的程序步骤化,使用的时候依次调用,看中的是中间的过程,每一个步骤都需要自己去完成(手洗衣服)

优点:性能比面向对象高,因为面向对象调用时需要进行实例化,开销比较大。 Eg:Linux操作系统、嵌入式开发、单片机

缺点:没有面向对象容易维护、易复用、易拓展

面向对象:将构成问题的事物分解成各个对象,将实现的程序模块化,不看中中间的过程和步骤,看中的是谁能帮我完成这件事情,找人帮我去做(机洗衣服)

优点:易维护、易复用、易扩展(OOP特征:封装、继承、多态),可以设计出低耦合的系统

缺点:开销比较大,性能比面向过程低

二、类与对象

类和对象是面向对象方法的核心概念。

类是对一类事物的描述,是抽象的、概念上的定义,不能直接使用,类不占空间

对象是实际存在的该类事物的每个个体,是类的实例,是真正存在的,对象占空间

三、类的定义

1.语法格式

<修饰符>  class  <类名>{
		[<属性>]
		[<构造函数>]
		[<方法>]
}
/**
 * 汽车图纸包含两部分
 * 属性:颜色 价格 品牌 长度 宽度
 * 行为:行驶 停止。。。
 *
 * 映射到类里面也是有两部分构成
 * 成员变量(属性):直接定义在类里面方法之外的变量
 * 成员方法(行为):就是把static去掉
 */
// 汽车图纸类 抽象的,不能直接使用
public class Car {
    // 成员变量(属性)
    String color;// 颜色
    int price;// 价格
    String brand;// 品牌
    double width;// 宽度
    double length;// 长度

    // 成员方法(行为)
      /**
     * 定义方法的语法格式
     * <修饰符> <返回类型>  <方法名>([参数列表]){
     *     [<语句>]
     * }
     * 修饰符:public private protected等
     * 返回类型:return语句传递返回值,没有返回值:void
     */
    public void run(){
        System.out.println("一辆汽车颜色是:"+color+",价格是:"+price+",品牌是:"+brand);
    }

    // 停止方法
    public void stop(){
        System.out.println("汽车停止行驶了");
    }
}

2.创建对象

/**
 * 开始造车
 * 一个类在正常情况下是不能直接使用的,类似于汽车图纸是不能直接行驶的
 * 如果想使用这个类必须根据这个类去创建这个类的对象,就相当于根据汽车图纸去造车
 *
 * 怎么去创建一个对象呢
 *   类名  对象名 = new 类名();
 *
 * 怎么操作属性
 *     对象名.属性名
 *     对象名.方法名
 */
public class TestCar {
    public static void main(String[] args) {
        // 创建一辆小汽车
        Car car1 = new Car();
        car1.brand = "五菱宏光";
        car1.color = "白色";
        car1.price = 1000;
        car1.length = 8;
        car1.width = 2;
        System.out.println(car1.brand);

        // 操作方法
        car1.run();
        car1.stop();
    }
}

3.成员变量和局部变量的区别

①.定义的位置不同

	成员变量定义在类的内部,方法的外部
	
	局部变量定义在方法的内部
	
②.作用域不同

	成员变量作用在类的内部

    局部变量作用在方法的内部

③.默认值不同

	成员变量有默认值

    局部变量没有默认值

④.内存中的位置不同

    成员变量保存在堆里面

    局部变量保存在栈里面

⑤.访问修饰符不同

	成员变量的访问修饰符有四个

    局部变量没有访问修饰符修饰,默认跟方法的类型一样

4.形参和实参

形参:在方法定义的时候实际定义的参数,写在方法小括号里面的参数

实参:在调用方法的时候,实际传入到方法里面的数据

参数传递的过程中,有两项规则:

1.对于基本数据类型来说,形参的操作不会影响实参

2.对于引用数据类型来说,形参的操作会影响实参,因为传入的是堆里面的地址值,形参和实参指向的是同一块地址值

5.构造方法

在Java中有时候会使用一个特殊的方法叫构造方法,也叫构造器,构造方法最大的作用就是创建对象,new的时候就是调用了构造方法

格式
  public 构造方法名(形参){
  	语句
  }

构造方法的作用:

1.无参构造方法就是创建对象

 2.有参构造方法就是在创建对象的同时给属性赋值

注意:
1.构造方法不能有返回值
2.构造方法名必须和类的名字一致,大小写也得一致
3.构造方法也是一个方法,可以进行方法重载
4.如果在定义一个类的时候,没有去定义构造方法,系统默认会提供一个无参的构造方法
5.如果定义了构造方法,系统不会再提供无参构造方法
6.如果定义了有参构造方法,一定要加上无参构造方法
7.一个类可以创建多个重载的构造方法

6.四种访问权限修饰符

java权限修饰符public、protected、private置于类的成员定义之前,用来限定对象对该类成员的访问权限,访问修饰符可以修饰类、方法、接口、属性…
访问权限修饰符

  • private:私有的,只能在当前类的内部去访问
  • default(缺省):在同一个包下可以访问,缺省就是什么访问修饰符都不加
  • protected:受保护的,在同一个包中或者在其他子类中可以访问
  • public:公共的,在当前项目下的任何包中都可以访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值