Java学习记录第十三天

news2024/11/16 17:47:23

面向对象编程

核心思想就是OOP(面向对象编程)

面向过程&面向对象

面向过程思想

  • 步骤清晰简单,第一步做什么,第二步做什么...

  • 面对过程适合处理一些较为简单的问题

面向对象思想

  • 物以类聚,分类的思维模式,思考问题首先解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。

  • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!

对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思想来分析整个系统。但是具体到微观操作,仍然需要面向过程的思路去处理。

什么是面向对象

面向对象编程(OOP)

面向对象编程的本质就是:以类的方式组织代码,以对象的的组织(封装)数据

抽象

三大特性:

  • 封装

  • 继承

  • 多态

从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象

从代码运行角度考虑是先有类后有对象,类是对象的模版。

回顾方法的定义

方法的定义

  • 修饰符

  • 返回值

//Demo1 类
public class Demo1 {
    //main 方法
    public static void main(String[] args) {
    }
    /**
     修饰符 返回值类型   方法名(...){
     //方法体
     return 返回值;
     }
     */
    public String sayHello(){
        return "hello,world!";
    }
//    public void hello(){
//        return;
//    }
    public  int max(int a,int b){
        return a>b ? a : b;//三元运算符!
    }
}
  • break:跳出switch,结束循环 和return的区别

    return:结束方法,返回一个结果!

  • 方法名:注意规范,见名之意

  • 参数列表:(参数类型,参数名)...

  • 异常抛出:疑问,后面讲解

以前遇到过的异常:数组下标越界 Arroyindexoutofbounds

方法的调用:递归

  • 静态方法

public class Demo2 {
    //静态方法  static
      //类名.方法名()
    public static void main(String[] args) {
        Student.say();
    }
}
//学生类
public class Student {
    //静态方法
    public static void say(){
        System.out.println("学生说话了");
    }
}
  • 非静态方法

public class Demo2 {
    //非静态方法
    public static void main(String[] args) {
        //实例化这个类 new
        //对象类型 对项名=对象值;
       Student student=new Student();
       student.say();
    }
}
public class Student {
    //非静态方法
    public void say(){
        System.out.println("学生说话了");
    }
}

例:

//和类一起加载的   
public static void a(){
    b();
}
//类实例化之后才存在
public void b(){
}
  • 形参和实参

public class Demo3 {
    public static void main(String[] args) {
        int add=Demo3.add(1,2);
        System.out.println(add);
    }
    public static int add(int a,int b){
        return a+b;
    }
}
  • 值传递和引用传递

//值传递
public class Demo4 {
    public static void main(String[] args) {
        int a=1;
        System.out.println(a);//1
        Demo4.change(a);
        System.out.println(a);//1
    }
    //返回值为空
    public static void change(int a){
        a=10;
    }
}
//引用传递
public class Demo5 {
    public static void main(String[] args) {
        Perosn perosn = new Perosn();
        System.out.println(perosn);
        Demo5.change(perosn);
        System.out.println(perosn.name);
    }
    public static void change(Perosn perosn){
        //perosn是一个对象:指向--->Perosn perosn = new Perosn();这是一个具体的人,可以改变属性!
        perosn.name="yun";//"yun"
    }
}
//定义了一个Perosn类,有一个属性:name
class Perosn{
    String name;//null
}
  • this关键字

类和对象的关系

类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物.

  • 动物、植物、手机、电脑.…..

  • Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为

对象是抽象概念的具体实例

  • 张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。

  • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念.

我们可以将这些思想转换为代码实现!

创建与初始化对象

使用new关键字创建对象

使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化,以及对类中构造器的调用。

类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下俩个特点:

  • 必须和类的名字相同

  • 必须没有返回类型,也不能写void

构造器必须要掌握

import OOP.demo02.Student;
​
//一个项目应该只存在一个main方法
public class Application {
    public static void main(String[] args) {
        //类是抽象的,需要实例化
        //类实例化后会返回一个自己的对象!
        //student对象就是一个Student类的具体实例!
        Student xiaoming = new Student();
        Student xh = new Student();
        
        xiaoming.name="小明";
        xiaoming.age=3;
        System.out.println(xiaoming.name);
        System.out.println(xiaoming.age);
​
        xh.name="小红";
        xh.age=3;
        System.out.println(xh.name);
        System.out.println(xh.age);
    }
}
//学生类
public class Student {
    //属性:字段
    String name;//null
    int age;//0
​
    //方法
    public void study(){
        System.out.println(this.name+"在学习");
    }
}

构造器详解

//java--->class
public class Person {
        //一个类即使什么都不写,他也会存在一个方法
        //显示的定义构造器
        String name;
        //实例化初始值
        //1.使用new关键字,本质是在调用构造器
        //2.用来初始化值
        public Person(){
//            this.name="yun";
        }
        //有参构造:一旦定义了有参构造,无参就必须显示定义
    public Person(String name){
            this.name=name;
    }
​
}
//alt+intsert 默认生成有参
//alt+intsert  select none 生成无参
​
​
/**
 * public class Application {
 *     public static void main(String[] args) {
 *         //使用new关键词实例化一个对象
 *         Person person = new Person();
 *         System.out.println(person.name);
 *     }
 * }
 */

构造器总结:

  1. 方法名必须和类名相同

  2. 没有返回值

作用:

  1. new本质在调用构造方法

  2. 初始化对象的值

注意点:

  1. 定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造

快捷键:

alt+intsert 默认生成有参
alt+intsert  select none 生成无参

创建对象内存分析

public class Pet {
    String name;
    int age;
    public void shout(){
        System.out.println("叫了一声");
    }
}
/**
 * public class Application {
 *     public static void main(String[] args) {
 *         Pet dog = new Pet();
 *         dog.name="旺财";
 *         dog.age=3;
 *         dog.shout();
 *
 *         System.out.println(dog.name);
 *         System.out.println(dog.age);
 *     }
 * }
 */

一定要理解!!!

简单小结类与对象

  • 类与对象

    类是一个模板:抽象;对象是一个具体的实例

  • 方法

    定义、调用!

  • 对应的引用

    引用类型: 基本类型(8)

    对象是通过引用来操作的:栈--->堆

  • 属性:字段Field 成员变量

    默认初始化:

    修饰符 属性类型 属性名=属性值!

    • 数字: 0 0.0

    • char:u0000

    • boolean:false

    • 引用:null

  • 对象的创建和使用:

    必须使用new关键字创造对象,构造器 Person yun =new Person();

    对象的属性 yun.name

    对象的方法 yun.sleep()

  • 类:

    静态的属性 属性

    动态的行为 方法

学习视频地址:

面向对象07:简单小结类与对象_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1552158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker常见软件部署2

1 docker 安装redis集群 docker 安装redis集群,3主3从的配置。 1 创建一个redis通信网卡 #创建一个redis集群使用的网卡 docker network create redis --subnet 172.38.0.0/16 2 创建6个redis的配置文件 #通过脚本创建六个redis配置,复制下面命令直接…

VTK——自定义二维图像涂抹Widget(支持任意值涂抹),擦除,恢复 vtkCustomPaintWidget

通过鼠标控制 涂抹区域,可以进行,后退,可以进行二维标注,也可以进行回退,也可以任意值涂抹。 vtkCustomPaintWidget 1.标注: 2.擦除 视频: 2D标注 vtkPaint VTK 2D 标注 描绘 2D 擦除&#x…

酒店能源监测管理系统:实现节能减排与提升管理效率的利器

随着全球能源问题的日益突出和可持续发展理念的深入人心,酒店业也在积极探索节能减排的途径。在这一背景下,酒店能源监测管理系统应运而生,成为了酒店行业提升管理效率、降低能源消耗的重要工具。本文将从多个角度介绍酒店能源监测管理系统的…

QT控件之显示控件

Qt Designer显示窗口部件提供的面板中,提供了10种显示小部件 (1) Label标签 (2) Text Browser文本浏览器 (3) Graphics View图形视图 (4) Calendar Widget日历 &…

【Pytorch入门】小土堆PyTorch入门教程完整学习笔记(详细笔记并附练习代码 ipynb文件)

小土堆PyTorch入门教程笔记 最近在观看PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】顺便做点笔记,方便回看,同时也希望记录的笔记能够帮助到更多在入门的小伙伴~ 【注】仅记录个人觉得重要的知识&#xff0c…

Java项目:79 springboot海滨体育馆管理系统的设计与实现

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 体育馆管理系统主要实现了管理员功能模块和学生功能模块两大部分 管理员功能模块: 管理员登录后可对系统进行全面管理操作&#…

android安卓看书APP课设

一、引言 随着移动设备的普及和网络的发展,手机阅读成为了现代人获取知识和娱乐的重要途径之一。为了满足用户的阅读需求,我们设计并开发了一款安卓看书APP。本文将介绍该APP的设计理念、功能特点以及技术实现。 二、功能描述 1. 主页底部导航栏 为了…

免费|Python|【需求响应】一种新的需求响应机制DR-VCG研究

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序对应文章《Contract Design for Energy Demand Response》,电力系统需求响应(DR)用来调节用户对电能的需求,即在预测的需求高于电能供应时,希…

rtthread studio 基于bsp生成代码stm32l475正点原子潘多拉,以及硬件配置

1、基于bsp生成代码 rtthread studio 很强大的一个功能就是可以根据芯片或者bsp 生成驱动代码,而且rtthread内核 已经集成到了代码中!!只需要关注于如何使用硬件和设备完成我们想要的功能就可以; 它的官网文档也特别详细&#x…

银行监管报送系统介绍(十二):非居民金融账户涉税信息报送

国家税务总局、财政部、中国人民银行、中国银行业监督管理委员会、中国证券监督管理委员会、国家金融监督管理总局2017年5月9日发布、2017年7月1日起施行的《非居民金融账户涉税信息尽职调查管理办法》。 一、《管理办法》出台的背景是什么?   受二十国集团&…

算法---动态规划练习-8(打家劫舍2)

打家劫舍2 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 首先,给定一个非负整数数组 nums,其中 nums[i] 表示第 i 家的财物价值。 定义两个辅助数组 f 和 g,长度都为 n(n 是…

Java智慧工地源码 智慧工地的价值体现 开发一套智慧工地系统需要多少钱

智慧工地是智慧地球理念在工程领域的行业具现,是一种崭新的工程全生命周期管理理念。它运用信息化手段,通过三维设计平台对工程项目进行精确设计和施工模拟,围绕施工过程管理,建立互联协同、智能生产、科学管理的施工项目信息化生…

亲身体验!人工智能对话无障碍 —— BRClient 使用指南

01 概述 BRClient 这个名字来源于“Bedrock Client”的简称,寓意是为用户提供一个坚实的基础。BRClient 作为一个开源的桌面应用,为用户提供了友好的图形界面,让每个人都能够轻松访问和使用 Claude 3 的强大功能。用户可以自定义 Claude 3 的…

2024 ccfcsp认证打卡 2023 03 01 田地丈量

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n in.nextInt(); // 输入 n,表示矩形的数量int a in.nextInt(); // 输入 a,表示整个区域的长度int b in.nextInt()…

Web Components初探

组件化,标签语义化,是前端发展的趋势。现在流行的组件化框架有React、Vue等,标签语义化在H5中添加的article、dialog等。 Web Components 就是类似的一套技术,允许您创建可重用的定制元素,并且在您的web应用中使用它们…

python外网下载指定库导入内网的方法

前提:保持内网python版本和外网python版本一致 1.外网电脑上新建一个空文件夹,用于存放下载下来的库,cmd窗口中输入命令pip install 库名 -target下载的库存放的路径,则会将对应库下载到指定文件夹下 2.将该文件夹下内容拷贝内网…

Git_常用命令+代码冲突解决方案

文章目录 基本命令的使用查看git的当前版本初始化配置设置用户名及邮箱设置仓库的认证方式查看当前配置 创建仓库从远程服务器克隆仓库创建本地仓库 添加和提交文件工作区域和文件状态工作区域文件状态 查看文件状态及分支信息查看暂存区的内容添加文件提交文件查看提交日志回退…

贝锐蒲公英虚拟DMZ:工业设备异地组网,解决网段冲突难题

虚拟DMZ 产品/技术的原理传统DMZ: DMZ中文名称为“隔离区”,也称“非军事化区”;它是为解决安装防火墙后外部网络不能访问内部网络服务器的问题。网关DMZ功能开启后, 将内网的一台服务器完全暴露在外网(内网某个IP绑…

Redis入门到实战-第二十二弹

Redis实战热身Sentinel篇 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的(采用BSD许可证),用作数据库、缓存、消息代理和流处理引擎的内存…

C++基础之重载,重写和隐藏(十八)

一.重载 定义&#xff1a;发生在统一作用域中&#xff0c;函数名称相同&#xff0c;但是参数列表不同&#xff08;包括参数的个数&#xff0c;参数类型&#xff0c;参数顺序&#xff09;。 #include <iostream>using std::cout; using std::endl;int add(int a,int b) …