JAVASE第四章(面向对象上)


前言

面向对象编程是当今主流的程序设计思想。Java 是完全面向对象编程语言,所以必须熟悉面向对象才能够编写 Java 程序。


一、面向过程和面向对象的设计思想

以洗衣服为例,看看面向对象和面向过程的区别
(把要完成的一件事情,分成一步一步的步骤,然后逐步完成.)
面向过程语言设计思想:
1.打开洗衣机盖 ()
2.衣服扔进去()
3.关闭洗衣机盖()
面向对象语言设计思想:
(首先会宏观的对整个事物进行分析(分类),不关心具体要做什么,关心谁(对象)去做)
洗衣机:
---- 洗衣服()
---- 脱水()
----定时()
人:
---- 开盖()
----关盖()
----放衣服()

注意:面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观
上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过
程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,
成为无源之水。


二、JAVA类

1.什么是类?

类是一个模板,它描述一类事物的属性和行为的集合. 类是表示一个客观世界某类群体的一些基本特征抽象.
在这里插入图片描述

2.类的结构

成员变量:事物属性的描述;
方法:事物的行为;(可以做的事情)
构造方法:用于创建对象;
内部类: 即在类体中声明的类。
块:一段没有名称的代码块

3.JAVA类的定义

3.1 发现类

类的声明格式为:
[访问权限修饰符] [修饰符] class Car{
}

访问修饰符有两种public,无(默认)
修饰符:final,abstract
关键字class用来定义一个类
Java类名的命名规范:类名首字母大写,见名知意,驼峰表示

3.2 发现类的共有属性(成员变量)

public class Car{
//成员变量定义
String name; //名称
String color; // 颜色
float price;//价格
}
声明成员变量的格式为:
[访问权限修饰符] [修饰符] type attr_name
[=defaultValue] ;
例如:public static int a=10;

3.3 发现类的方法

方法声明格式为:
[访问权限修饰符] [修饰符] void start(){
System.out.println(“汽车启动”);
[return 返回值;]
}
}
例如:public static void stop(){
System.out.println(“汽车刹车”);
}


三、JAVA对象

对象:对象是类的一个实例,是以类为模板在内存中创建的实际存在的实例。

1.对象的创建和使用

以Car x1 = new Car()为例;
1.Car x1:使用Car类作为类型声明一个变量x1
2.new Car():使用new + Car类构造方法创建对象. = :将右边创建的对象地址 赋给 左边的x1变量
3.使用x1变量访问对象中的成员变量和成员方法.

同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。

2.类和对象

类是一类事物的抽象概念,是一个模型,对象是由这个模型所创造的一个个具体存在的,实实在在存在的实例. 所以创建对象的过程也叫实例化对象,现实生活中先有对象后有类,而编程时先设计类后创建对象.


四、JAVA变量

1.成员变量

1.成员变量是定义在类中,方法体之外的变量。
2.成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
3.在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
4.成员变量在创建对象的时候会从类中复制一份到对象中。
5.成员变量可以被类中方法、构造方法和特定类的语句块访问。
6.成员变量的作用范围为整个类体。

2.局部变量

1.在方法、构造方法或者语句块中定义的变量被称为局部变量。
2.局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
3.局部变量在使用前必须初始化赋值。
4.变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。


五、JAVA方法

1.成员方法

成员方法是定义在类中。
语法格式:
修饰符 返回值类型 方法名 ( 参数列表) {
方法体语句;
[return 返回值]
}
例如:public static void stop(){
System.out.println(“汽车刹车”);
}

2.构造方法

1.构造方法名与类名相同,且没有返回值,且不需要使用void修饰。
2.作用:在构造方法中为创建的对象初始化赋值
3.在创建一个对象的时候,至少要调用一个构造方法。
4.每个类都有构造方法。如果没有显式地为类定义构造方法,Java将会为该类提供一个默认构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。
5.一个类可以有多个构造方法(构造方法的重载)

3.方法的重载

方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法。
● 参数不同(可以有三方面的不同)
● 数量不同
● 类型不同
● 顺序不同
● 调用时,会根据不同的参数表选择对应的方法。
注意:方法重载跟方法的返回值类型没有任何关系

public class Car {
    String name;     //成员变量    修饰符  类型  变量名;
    String color;
    int price;
   /* byte size;
    float discount;*/
    public Car(){

    }
    public Car(String name, String color, int price) {    //构造方法的重载;
        this.name = name;
        this.color = color;
        this.price = price;
        System.out.println("调用了String name, String color, int price的构造方法");
    }
    public Car(int price,String color){
        this.price=price;
        this.color=color;
        System.out.println("调用了int price,String color的构造方法");
    }
    public Car(String color,int price){
        this.color=color;
        this.price=price;
        System.out.println("调用了String color,int price的构造方法");
    }
   //定义方法 : 修饰符  放回值类型  方法名
    /*public  String getName() {
        return name;
    }

    public String getColor() {
        return color;
    }

    public int getPrice() {
        return price;
    }

    public void run(){
     *//*   int a;
        System.out.println(a);*//*     //局部变量必须先赋值在使用
        System.out.println("汽车正在运行");
    }

    public void stop() {
        System.out.println("汽车已经停止运行");
    }*/
}
public class CarTest {
    public static void main(String[] args) {
        //new Car()构造方法初始化一个类,bc是引用数据类型,指向该对象的具体地址;
       /* Car bc=new Car("奔驰","白色",200000);
        bc.run();
        bc.stop();
        String color= bc.getColor();
        String name=bc.getName();
        int price=bc.getPrice();
        System.out.println("该车的类型是:"+name+" 该车的颜色是: "+color+" 该车的价格是: "+price);
        //一个类可以有多个对象
        //成员变量会在初始化的时候拷贝进来,方法不会;
        Car bm=new Car("宝马","黑色",300000);
        bm.run();
        bm.stop();
        String color1= bm.getColor();
        String name1=bm.getName();
        int price1=bm.getPrice();
        System.out.println("该车的类型是:"+name1+" 该车的颜色是: "+color1+" 该车的价格是: "+price1);*/
        //默认值: boolean:false  int:0  float:0.0  char:' '(空格)  引用类型:null   double:0.0  byte:0
        //成员表量可以不显性的初始化值,因为在初始化的时候会自动赋值(空参的构造方法,值就为数据类型的默认值);
        //局部变量必须先赋值然后才能使用;
        /*Car ad=new Car();
        System.out.println(ad.color);
        System.out.println(ad.name);
        System.out.println(ad.price);//会输出数据类型的默认值;
        System.out.println(ad.size);
        System.out.println(ad.discount);*/
        //成员变量在对象创建时生,对象回收时死;
        //局部变量在方法进行时生,方法结束后死;
        Car bm=new Car(300000,"绿色");
        System.out.println(bm.price+"  "+bm.color);
        Car bc=new Car("奔驰","白色",200000);
        System.out.println(bc.name+" "+bc.color+" "+bc.price);
        Car ad=new Car("黑色",300000);
        System.out.println(ad.color+" "+ad.price);
    }
}


总结

本章主要介绍了面向对象和面向过程编程思想的区别,以及面向对象的相关知识,比如类、变量、方法等。该部分内容主要是一些思想层面的知识,设计编程的内容较少,不过十分重要。大家可以查阅更多的资料来感受面向对象编程语言的思维模式,为以后的学习打下良好的基础。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JinziH Never Give Up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值