首页 > 编程语言 >Java day 05

Java day 05

时间:2024-09-25 16:27:15浏览次数:9  
标签:Java 05 对象 成员 day class void 方法 public

Java day05

面向对象

1. 面向对象与面向过程的区别

面向过程的思想:代表语言 c语言 功能开发的每一步都是自己参与的
面向对象的思想:代表语言 Java语言 指的是不断地创建对象,指挥对象事情过程

  1. 举例现实生活的例子
    喝水:
    面向过程的思想:自己拿起水杯,自己走到饮水机前,自己接水
    面向对象的思想:祈求同桌接水,同桌拿起水杯,同桌走到饮水机面前,同桌接水

  2. 伪代码的例子
    将大象装进冰箱
    面向过程思想:

    class Demo{
        public static void main(String[] args){
            //打开冰箱门
            //实际上打开冰箱门的功能代码量是很多的
    
            //大象跳进冰箱
            //实际上大象跳进冰箱的功能代码量是很多的
    
            //关闭冰箱门
        }
    }
    

    补充14:52

面向对象的思想:

  1. 都有哪些事物?

判断事物的方式

  1. UML课程知识

  2. 名词提取法
    大象,冰箱,测试类

  3. 事物中都有些什么?
    大象:
    属性:身高,体重,性别…..
    行为:跳进冰箱,吃饭,睡觉….
    冰箱:
    属性:颜色,容量,大小….
    行为:打开冰箱门,关闭冰箱门...
    测试类:
    main方法

  4. 事物和事物之间的关系是什么?
    在测试类中创建大象对象和冰箱对象

    class 大象{
         身高;
         体重;
    
         跳进冰箱(){
             //...
         }
    
         吃饭(){
             //...
         }
    
         睡觉(){
            //...
         }
    }
    
    class 冰箱{
         颜色;
         容量;
         大小;
    
         打开冰箱门(){
    
         }
    
         关闭冰箱门(){
    
         }
    }
    
    class Test{
         public static void main(String[] args){
             //创建一个大象对象
             //创建一个冰箱对象
             //调用冰箱对象中的打开冰箱门的方法
             //调用大象对象中的跳进冰箱的方法
             //调用冰箱对象中的关闭冰箱门的方法
         }
    }
    
  5. 类和对象的关系
    类:相当于汽车图纸
    对象:通过图纸造出来的一辆车

  6. 面向对象的三大特征:
    封装
    继承
    多态

成员方法和成员变量都在class里,这一个类里

package com.shujia.day05;

import java.util.Scanner;


/*
    学生:                      class Student:
        属性:姓名,年龄,性别          成员变量:name,age,gender
        行为:吃饭,睡觉               成员方法:eat(){},sleep(){}

 */
public class Student {
    //成员变量,定义在类中方法外
    String name;
    int age;
    String gender;

    //成员方法
    public void eat() {
        System.out.println("吃饭");
    }

    public void sleep() {
        System.out.println("睡觉");
    }
}
//这个类里不需要有main方法的,因为这个类只是用来描述student的属性行为的

class Demo1 {//再写一个类,要创建对象啦!!再一个类!
    
    public static void main(String[] args) {
        //创建一个学生对象
        //如何通过一个类创建一个对象
        // 语法格式:类名 对象名 = new 类名();
        //new在这里创建了一个新对象
        Student s1 = new Student();
        //获取对象中的成员变量
        //对象名.成员变量名
        String n1 = s1.name;
        System.out.println("姓名:" + n1);
        s1.name = "江川";
        System.out.println("姓名:" + s1.name);

        //如何使用对象中的成员方法
//        eat();
        //对象名.成员方法名()
        s1.eat();
        s1.sleep();
    }
}

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

  1. 在类中的位置不同
    成员变量 类中方法外
    局部变量 方法内或者方法声明上
  2. 在内存中的位置不同
    成员变量 堆内存
    局部变量 栈内存
  3. 生命周期不同
    成员变量 随着对象的存在而存在,随着对象的消失而消失
    局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
  4. 初始化值不同
    成员变量 有默认的初始化值
    局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。

形式参数
当今后看到类做参数时候,调用时需要传入该类的对象【或者该类的字对象】

当你今后看到一个类作为方法的参数的时候,将来调用时需要传入该类的对象【或者该类的子类对象】

package com.shujia.day05;


//定义一个教师类
class Teacher {
    public void fun2(){
        System.out.println("好好学习,天天向上!");
    }
}

class Demo2{
    //当你今后看到一个类作为方法的参数的时候,将来调用时需要传入该类的对象【或者该类的子类对象】
    public void method(Teacher t){ //Teacher t = new Teacher()
        t.fun2();
    }
}

public class TeacherDemo1 {
    public static void main(String[] args) {
        Demo2 d1 = new Demo2();
//        Teacher t1 = new Teacher();
        d1.method(new Teacher()); // new Teacher()

        //匿名对象,指的是没有名字的对象,只能用一次,后续无法继续使用该对象
//        d1.method(new Teacher());
    }
}

封装:

package com.shujia.day05;

/*
    我们按照今天说的类和对象的知识,创建了一个Person对象,并且也成功赋值了姓名和年龄
    但是我们可以赋值一些不合实际的数值,这是不应该出现,所以我们应该在赋值之前,要先判断一下要赋的值是否合理
    既然是加判断,就不是一句话可以搞定的,我们可以定义一个方法,使用方法对成员变量赋值
    我们确实可以通过加一个方法来对成员变量进行赋值,但是谁规定了我必须要用这个方法呢?我们依旧可以使用原来的方式进行赋值
    我们如果可以通过一些手段,让外界无法直接获取成员变量,这样就不得不使用方法进行赋值了。
    java提供一个关键字给我们使用:private 私有的

    private关键字:
        可以修饰成员变量,成员方法,构造方法
        在同一个类中,private关键字不起作用,相当于透明的,同一个类中被private关键字修饰的成员可以随意访问


    说到现在,其实说的就是面向对象编程三大特征之一:封装
    封装: 使用private关键字将类中细节进行隐藏,只对外提供公共的访问方式。

    一个标准类的写法:最终是4.0版本
        1.0版本的写法:使用private关键字修饰成员变量
        类:
            成员变量:使用private关键字修饰
            成员方法:针对每一个成员变量提供对应公共的setXxx()和getXxx()



 */
class Person {
    private String name;
    private int age;

    public String getName(){
        return name;
    }

    public void setName(String n){
        name = n;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int i) {
        if (i > 0 && i <= 130) {
            age = i;
        }else {
            System.out.println("输入的年龄不合实际!");
        }
    }

    private void fun1(){
        System.out.println("好好学习,天天向上!");
    }

    public void show1(){
        fun1();
    }
}

public class PersonDemo {
    public static void main(String[] args) {
        //创建一个Person类的对象
        Person p1 = new Person();
//        System.out.println("姓名:" + p1.name);
//        System.out.println("年龄:" + p1.age);
        System.out.println("姓名:" + p1.getName());
        System.out.println("年龄:" + p1.getAge());
        System.out.println("-------------------------");
//        p1.name = "江川";
//        p1.age = 1800;
        p1.setAge(1800);
        p1.setName("江川");
//        System.out.println("姓名:" + p1.name);
//        System.out.println("年龄:" + p1.age);
        System.out.println("姓名:" + p1.getName());
        System.out.println("年龄:" + p1.getAge());
        System.out.println("------------------------");
//        p1.fun1();
        p1.show1();
    }
}

标签:Java,05,对象,成员,day,class,void,方法,public
From: https://www.cnblogs.com/lsb021214/p/18431566

相关文章

  • Java的详细学习路线
    大家好!我是故里dd,今天给大家说说Java的学习路线!Java的详细学习路线可以分为多个阶段,每个阶段都涵盖了不同的核心知识点和技能。以下是一个较为全面的Java学习路线,供您参考:第一阶段:Java核心基础阶段1.Java基础语法:  -了解Java的基本语法,如数据类型、变量、运算符、控制......
  • java-重启异常断掉的线程和监控线程状态
    java-重启异常断掉的线程和监控线程状态背景主要代码打印结果总结背景有一个线程,可能会因为异常而终止掉。为了监控这个线程,我又启动一个线程去监控。主要代码代码主要是由两个线程和两个可以产生异常的方法,内容跟简单,如下importjava.time.LocalDateTime;impor......
  • Java面试-Redis篇(二)
    分布式锁抢劵场景分布式锁使用集群分布式锁使用代码展示setnx实现分布式锁Redis实现分布式锁主要利用Redis的setnx命令。setnx是SETifnotexists(如果不存在,则SET)的简写。redisson给锁续期代码实现publicvoidredisLock()throwsInterruptedException......
  • java+vue计算机毕设X钢材商贸公司网络购销管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网经济的蓬勃兴起,传统钢材商贸行业正面临前所未有的变革与挑战。X钢材商贸公司作为业内的佼佼者,长期以来依赖传统的购销......
  • java+vue计算机毕设爱心宠物中心管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快和城市化进程的推进,宠物已成为许多家庭不可或缺的重要成员,它们不仅为人们的生活带来了欢乐与陪伴,也促进了人与动物之间的情感......
  • java+vue计算机毕设IE绿色城市垃圾分类监管系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,城市生活垃圾产生量急剧增加,垃圾分类已成为缓解“垃圾围城”困境、促进资源循环利用、实现绿色可持续发展的重要举措。然而,传统......
  • java实现角色及菜单权限
    在Java中实现角色及菜单权限通常涉及几个关键组件:用户(User)、角色(Role)、权限(Permission)以及它们之间的关系。下面我将概述一个基本的实现方案,包括数据库设计和代码层面的处理。1.数据库设计表设计用户表(users)user_id(主键)usernamepassword...角色表(roles)role_id(主键)role_name.......
  • 基于java实验室仪器设备管理系统的计算机毕设源码+论文
    摘要实验室仪器设备管理系统是一个基于Internet,采用B/S(Browser/Server,浏览器/服务器模式)模式,并根据现有的实验室仪器设备管理系统的现状而设计开发的服务于实验室仪器设备管理行业网络管理平台。本文以JSP为开发技术,实现了一个实验室仪器设备管理系统。该信息管理系统分为管理员......
  • 数据处理与统计分析篇-day10-Matplotlib数据可视化
    数据可视化简介可视化介绍数据可视化是指直观展现数据,它是数据处理过程的一部分。把数值绘制出来更方便比较。借助数据可视化,能更直观地理解数据,这是直接查看数据表做不到的数据可视化有助于揭示数据中隐藏的模式,数据分析时可以利用这些模式选择模型可视化库介绍基于......
  • 03.Java方法详解
    1.何谓方法?Java方法是语句的集合,在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:一个方法只完成1个功能,有利于后期扩展定义:类似c++里的函数,是一段用来完成特定功能的代码片段,一般定义......