Java学习记录第十三天

面向对象编程

核心思想就是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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

香港服务器与SEO的关系(香港服务器对SEO影响大吗?)

香港服务器与 SEO 的关系是一个备受关注的话题,不少站长在选择了香港服务器后,便会疑问:香港服务器对SEO的影响是否显著?那么,在这里就跟大家聊聊两者的关系以及影响大小。 其实,不少站长对 SEO 的这种担忧和想法是片…

国内IP代理软件电脑版:深入解析与应用指南

随着互联网技术的快速发展,网络活动日益丰富多样,IP代理软件也因其独特的功能和优势,成为许多电脑用户不可或缺的工具。在国内,由于网络环境的复杂性和特殊性,选择一款稳定、高效的IP代理软件电脑版尤为重要。虎观代理…

Can‘t connect to MySQL server on ‘localhost‘ (10061)

问题展示:在安装sqlyog并连接本地数据库的时候出现该问题 问题分析:没有启动mysql服务

FLV流媒体封装格式

1、FLV 简介 FLV(Flash Video) 是 Adobe 公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用 FLV 格式封装的文件后缀为.flv。直播场景下拉流比较常见的是 http-…

无人车网关案例:记SV900无人清扫车网关的现场应用

​随着无人驾驶技术的不断发展,无人车辆已经开始广泛应用于物流配送、环境保洁、巡逻监控等众多领域,助力城市运营更加高效智能。而要实现无人车辆的安全可靠运行,关键在于选择一款性能卓越的车载网络通信系统.在这一背景下,星创易联推出了SV900无人车网关系列产品。它集5G/4G网…

kubernetes(K8S)学习(九):K8S之日志监控

K8S之日志监控 一、Log and Monitor1.1 Log1.1.1 容器级别1.1.2 Pod级别1.1.3 组件服务级别1.1.4 LogPilot ES Kibana 1.2 Monitor1.2.1 Prometheus简介1.2.2 Prometheus架构1.2.3 Prometheus知识普及1.2.4 数据采集1.2.5 Prometheus Grafana 二、Trouble Shooting&#xff…

重生奇迹mu 弓箭手有什么技能

1、弓箭手职业技能:多重箭:同时射出三发弓箭,给予复数敌人伤害,根据弓的不同,射出的数量也不同。天堂之箭:弓箭垂直射向天际,准确的落在敌人的头顶上,造成严重的伤害。 2、重生奇迹…

【Unity】TextMeshPro富文本

启用富文本 在Unity里&#xff0c;如果需要使用富文本&#xff0c;首先需要开启Rich Text 如果不开启Rich Text&#xff0c;就会在UI上显示富文本代码 1.粗体 <b>Game</b> Over2.斜体 <i>Game</i> Over3.下划线 <u>Game</u> Over4…

ctfshow靶场sql注入wp

目录 web171 web172 web173 web174 web175 web176 web177-179 web180-183 web184 web185 web187 web190 web191 web192 web193 web194 web195 web196 web197 web199 web201 web202 web203 web204 web205 web206 web207 web208 web209 web210 web…

14 Games101 - 笔记 - 光线追踪(利用包围盒技术加速光线追踪(KD-Tree and BVH)

14 光线追踪&#xff08;利用包围盒技术加速光线追踪&#xff08;KD-Tree and BVH&#xff09; 在上一节中&#xff0c;我们介绍了whited-style光线追踪的原理&#xff0c;以及实现细节。相比与光栅化中所使用的的Blinn-Phong模型&#xff0c;光线追踪显著了提升了图像质量&am…

uniapp实现的数据选择器,支持H5、微信小程序

采用uniapp-vue3实现的数据选择器&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 支持本地自定义过滤、远程接口过滤&#xff0c;为了避免弹窗面板超出边界的情况&#xff0c;自动计算弹窗面板安置的位置&#xff08;在微信…

Java八股文(设计模式)

Java八股文の设计模式 设计模式 设计模式 什么是设计模式&#xff1f;请列举一些常见的设计模式。 设计模式是软件设计中常用的一种思维模式&#xff0c;它描述了一类具有相似特征和解决思路的问题。 常见的设计模式包括单例模式、工厂模式、观察者模式、装饰器模式等。 请解释…

博士推荐 | 拥有8年以上的材料和电池开发经验的电池材料专家

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态&#xff0c;用科技解决职业领域问题&#xff0c;提升行业数字化服务水平&#xff0c;提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

2024 年多链代币开发对您的业务有何好处

2024 年&#xff0c;多链代币开发将成为寻求增强数字化影响力并释放区块链领域新机遇的企业的关键战略。通过利用多个区块链&#xff0c;公司可以显着提高其代币的可扩展性、互操作性和安全性。这种方法不仅提高了交易速度并降低了费用&#xff0c;还使企业能够利用更广泛的用户…

港大新工作 HiGPT:一个模型,任意关系类型 !

论文标题&#xff1a; HiGPT: Heterogeneous Graph Language Model 论文链接&#xff1a; https://arxiv.org/abs/2402.16024 代码链接&#xff1a; https://github.com/HKUDS/HiGPT 项目网站&#xff1a; https://higpt-hku.github.io/ 1. 导读 异质图在各种领域&#xf…

编译与链接(想了解编译与链接,那么看这一篇就足够了!)

前言&#xff1a;在我们练习编程的时候&#xff0c;我们只需要将代码写入、运行&#xff0c;就可以得到计算之后的结果了&#xff0c;但是你有没有想过&#xff0c;为什么就可以得到计算之后的结果呢&#xff0c;它的底层又到底是什么呢&#xff1f; ✨✨✨这里是秋刀鱼不做梦的…

气象预测新篇章:Python人工智能的变革力量

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

数据结构与算法分析2栈、队列

1.栈和队列本质上都是表&#xff0c;所以他们都有两种实现方式&#xff0c;链表实现和数列实现。栈的特点是后进先出。 2.栈的实现 3.应用有&#xff1a; 4.栈的危险操作&#xff1a;用尽栈空间&#xff0c;导致内容占用到别的寄存器里面去了&#xff0c;从而出现异常。还有尾…

武汉星起航:借亚马逊平台优势助力商家精准营销

在全球经济一体化的背景下&#xff0c;跨境电商已成为推动国际贸易发展的重要引擎。作为跨境电商领域的佼佼者&#xff0c;亚马逊平台以其全球化销售渠道和强大的数据分析能力&#xff0c;为商家提供了前所未有的商机。武汉星起航电子商务有限公司深知亚马逊平台的优势&#xf…

企业为什么要用MES管理系统来升级改造生产车间

随着信息技术的迅猛发展&#xff0c;工业制造领域正经历着深刻的变革。在这个大背景下&#xff0c;MES管理系统的引入和应用&#xff0c;已成为企业升级改造生产车间、提升竞争力的关键手段。本文将从多个维度探讨企业为何要用MES管理系统来升级改造生产车间。 MES管理系统能够…