Java面向对象(基础班)

本文介绍了面向对象编程的概念,以C++和Java为例,阐述了类和对象的区别,以及类的属性(静态和动态)和方法的运用。同时讨论了内存管理中的栈和堆,以及一个游客案例和管理员密码修改、客户积分回馈的实际应用。
摘要由CSDN通过智能技术生成

1.1类和对象说明

面向过程(c语言,写代码用到的if语句,for循环等等)——>面向对象

面向对象:业务分门别列起来。设计成一个个类。使用类生成对象

类:比如人(抽象概念,单个)

对象:比如张三(多个)

C不是面向对象的编程语言,无法做到真正意义上的面向对象,c++,java可以做到面向对象

1.2类的属性和方法

类:依据于对象集分析,总结对象具有的属性。

属性:属于静态特征 (举例:人的姓名,性别,年龄)

方法(函数):属于动态属性 (举例:人的技能)

1.3类的入门案例

1.在scr文件中先新建一个类名

public类名与文件名一样

类的定义

//类名
public class School {//静态特征
    // 属性
    String name;//名称
    int jsnumber;//教师数目
    int jfnumber;//机房数目
​
    //方法
    public void  show(){//展示方法
        System.out.println("名称:"+name+",教师数目"+jsnumber+",机房数目:"+jfnumber);
    }
}

如何在Demo01类中使用School中内容

把School作为一种自定义类型,再声明一种这种类型的变量

再分配内存空间

用school.来访问School类里面的内容

1.4类的入门案例内存图

  • 堆:堆是一种特殊的树形结构,主要用于申请内存,可以根据具体的需要动态地为程序分配和释放内存,使得程序可以根据其运行需求随时调整内存的使用量。堆的优点是可以满足复杂的内存需求,便于程序员申请和释放内存,但其缺点是由于动态分配内存,每次申请内存和释放内存都会耗费大量的时间和空间开销。

  • 栈:栈是一种特殊的线性表,具有先进后出的原则,栈顶指向栈中最后一个存储的元素。栈主要用来储存函数调用时的信息,因此也称为调用栈。栈的优点是操作简单,易于书写,且存取的时间复杂度低。由于只允许在一端进行插入和删除操作,因此数据的存取是有限的

通过空指针Null去访问属性会报错,出现指针异常

栈和堆类似于指针关系,是栈指向堆

1.5游客案例

修改管理员密码

public class Manager {
    String name="admin1";//用户名
    int password=111111;
}
import java.util.Scanner;
​
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(true){
            System.out.println("请输入用户名");
            String name=scanner.next();
            Manager manager=new Manager();
            if(name.equals(manager.name)){
                manager.name=name;
            }
            else {
                System.out.println("输入用户名错误");
                continue;
            }
            System.out.println("请输入旧密码");
            while(true){
                int password=scanner.nextInt();
                if(manager.password==password){
                    System.out.println("请输入新密码");
                    int mima= scanner.nextInt();
                    manager.password=mima;
                    System.out.println("修改成功你的密码是"+manager.password);
                    break;
                }
                else {
                    System.out.println("旧密码输入错误");
                    continue;
                }
            }
        }
    }
}

当然在main函数里面给类里面变量赋值也可以,但要注意一定要改变里面的值

1.6客户积分回馈

public class Custom {
    int jifen;
    String name;
    int a;
    public void huikui(){
        if((name.equals("金卡")&&jifen>1000)||(name.equals("普卡")&&jifen>1000)){
            a=1;
            System.out.println("回馈积分500分");
        }
        else a=0;
    }
    public void show(){
        System.out.println("顾客卡的类型"+name+"顾客的积分:"+jifen);
    }
}

import java.util.Scanner;

public class Donm1 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(true){
            System.out.println("请输入顾客的积分");
            int jifen=scanner.nextInt();
            System.out.println("请输入顾客卡类型");
            String name= scanner.next();
            Custom custom=new Custom();
            custom.name=name;
            custom.jifen=jifen;
            custom.huikui();
            if (custom.a==1)
            {
                custom.jifen=jifen+500;
            }
            else custom.jifen=jifen;
            custom.show();
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值