JavaSE第三章面向过程和面向对象的设计思想

JavaSE第三章:面向过程和面向对象的设计思想

1.面向过程和面向对象的设计思想

面向过程:procedure oriented programming 缩写 POP

分析出解决问题所需要的步骤,然后把步骤一步一步实现。

面向过程注重于解决问题过程:eg(上公交车过程)

停车();

开公交车门();

上车();

关公交车门();

开车();

面向对象:object oriented programming 缩写 OOP面向对象的编程语言

以分类的方式进行思考和解决问题,面向对象的思维方式适合于处理复杂的问题。面向对象的思想符合人类的认知习惯。

面向对象更注重于对于方法宏观上的设计:

门类

开公交车门();

关公交车门();

人类

操作();

总结:面向过程适合处理简单的事情,直接关注流程,简单有效。

面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理。

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

2.java类

类是一个模板,就像是一个设计图纸,是一类事物的属性和行为的集合;

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

基本的属性和方法

**变量:**对于类中事物属性的描述(类中的元素属性)

方法: 对某种事物行为的规定(这个类能干什么)

3.java类的定义

(1)发现类

类的声明格式:[访问权限修饰符] +[修饰符] +class+类名{

类的属性和方法

}

**访问权限修饰符:**目前学习到的为public和default( public表示这个类是可以随时随地被访问的,default表示这个类为默认访问模式即只允许在同一个package中访问).

修饰符: final或abstract.

**类名:**符合标识符定义语法要求,类名首字母大写,见名知意,驼峰表示.

例如定义一个公交类:

public class GongJiao{

类中内容

}

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

汽车类共有的特征:

  1. 颜色
  2. 名称
  3. 型号
    … …

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

(3)发现类的方法

public class Car{
//成员变量定义
String name; //名称
String color; // 颜色
float price;//价格
方法声明格式为:
[访问权限修饰符] [修饰符]/ void 方法名(){
System.out.println(“汽车启动”);
[return 返回值;]
}
}

4.java对象

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

对象的创建和使用
使用 new 关键字创建对象。
Car baomacar = new Car();
Car类就是baomacar的类型
使用对象 . 成员变量来引用对象的成员变量。
baomacar.color
使用对象(引用) . 方法来调用对象的方法。
baomacar. start()
同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。

总结类和对象
类是一类事务的抽象概念,是一个模型.
对象是由这个模型所创造的一个一个的具体存在的,是实实在在存在的实例.
所以创建对象的过程也叫实例化对象. 对象==实例

现实生活中先有对象后有类,而编程时先设计类后创建对象

5.变量与方法

(1)变量

一个类可以包含以下类型变量:
成员变量:
成员变量是定义在类中方法体之外的变量
成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量的作用范围为整个类体
局部变量
在方法、构造方法或者语句块中定义的变量被称为局部变量。
局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
局部变量在使用前必须初始化赋值。
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

类变量:(也叫静态变量)类变量也声明在类中,方法体之外,但必须声明为static类型。(后面static详细讲)

(2)方法

一个类可以包含以下类型方法:
**成员方法:**成员方法是定义在类中。这种方法在创建对象的时候创建。
语法格式:
修饰符 返回值类型/void 方法名 ( 参数列表) {
方法体语句;
[return 返回值]
}
**构造方法:**用来创建对象的方法

构造方法是定义在 Java 类中的一个用来创建对象的方法
构造方法名与类名相同,且没有返回值,且不需要使用void修饰。
使用 new + 构造方法 创建一个新的对象。在创建一个对象的时候,至少要调用一个构造方法。
一个类可以有多个构造方法。
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。

例: public class Car{
public Car(){ }
public Car(String name){ // 这个构造方法有一个参数:name }
}
例:创建Car类的对象
Car car1 = new Car();
Car car2 = new Car(“宝马”)

类方法:(也叫静态方法)类方法也声明在类中,但必须声明为static类型(后面细讲)

(3)方法的重载

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

练习题.定义一个银行类,

属性:账号、密码、存款余额,银行名称。

方法:创建账号、存款、取款、查询。

创建该类对象并测试

例:
创建银行类

package com.ff.javaOPP.homework4;
import java.util.Scanner;
public class yinhang {
//创建4个成员变量
    int zhanghao;
    int mima;
    int yue;
    String name;
//账号密码创建方法
    public int getZhanghao(int zhanghao, int mima) {
        Scanner s = new Scanner(System.in);
        System.out.println("输入您的账号");
        int z = s.nextInt();
        System.out.println("输入您的密码");
        int m = s.nextInt();
        mima = m;
        System.out.println("账户创建成功");
        System.out.println("余额:");
        return yue;
    }
//银行存款方法
    public int getcunkuan() {
        Scanner s = new Scanner(System.in);
        System.out.println("请放入现金:");
        int y = s.nextInt();
        yue += y;
        System.out.println("余额:");
        return yue;
    }
//银行取款方法
    public int qukuan(){
        Scanner s=new Scanner(System.in);
        System.out.println("请输入您要取的钱数:");
        int j=s.nextInt();
        if (yue>=j){
            System.out.println("余额:");
            return yue=yue-j;
        }else
            System.out.println("余额不足");
        return 0;
    }
//查询余额方法
    public int getYue() {
        System.out.println("余额:");
        return yue;
    }
}

创建一个人员类

package com.ff.javaOPP.homework4;
import java.util.Scanner;
public class persion {
    public static void main(String[] args) {
        yinhang p = new yinhang();//创建对象
        p.name = "工商银行";//成员方法声明
        p.yue=0;
        p.getZhanghao(p.zhanghao, p.mima);//创建账号方法调用
        Scanner s = new Scanner(System.in);
        while (true) {
            System.out.println("请选择操作:1.存款 2.取款 3.查询余额");
            int i = s.nextInt();
            if (i == 1) {
                System.out.println(p.getcunkuan());//在输出中调用方法
            } else if (i == 2) {
                System.out.println(p.qukuan());
            } else {
                System.out.println(p.getYue());
            }
        }
    }
}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值