java基础之面向对象

全网最新首发纯干货:微信数据库表结构完整分析(一) 找不到微信DB表结构说明?找不到具体字段的解释?来这里,全网最完整版!!! 阅读详情

 1  面向对象

  OOP(object oriented programming),面向对象编程是一种以对象为中心的编程思想,通过借助对象实现具体的功能将大问题拆分成小问题,然后借助不同对象分别解决,最终实现功能。
  POP(procedure oriented Programming),面向过程编程是一种以过程为中心的编程思想,靠自己一步一步去实现功能,需要对每个步骤精确控制。强调按步骤实现功能,先分析解决问题所需步骤,再自定义方法实现每个步骤功能,然后依次调用方法,最终实现功能。

面向对象三大基本特征:

         封装、继承、多态。而面向对象的过程就是找对象、建立对象、使用对象、维护对象的关系的过程。
       

 1 封装

         隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
 

 2、继承

         提高代码复用性;继承是多态的前提。


3、多态

        父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

类:是对现实生活中事物的描述。

对象:就是这类事物,实实在在存在的个体。

面向对象特点: 

        1、更符合人类思想习惯的思想
        2、利用对象去实现功能
        3、将复杂事情简单化
        4、针对要解决问题的用户而言,可以把大问题拆解成小问题,分别指挥不同的
        5、对象去解决小问题
        6、程序员的角色由执行者变成了指挥者 

对象的理解 

        任何事物都是一个对象(object)(万物皆对象)
        对象由对象组成
        每个对象都有属性(静态的描述信息)、行为(动态的功能描述)
        具有相似属性和行为的对象可以归为一类 

类的定义 

        具有相同属性和行为的对象可以抽象为类(数据类型的一种) 

类的组成 

        属性:指事物的特征,静态描述,例如:书包的大小、品牌等
        行为:指事物所具有的功能,动态描述,例如:用书包装书、从书包中取出几本书等

类的理解 
  1. 类是对现实生活中一类具有共同属性和行为的事物的抽象
  2. 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
  3. 简单理解:类就是对现实事物的一种描述
  4. 类是引用数据类型中的一种。
  5. 类是对象的抽象,对象是类的实例
类定义格式: 
[public] class 类名 {
    //属性,可以包含多个
    [权限修饰符] 数据类型 成员变量名;
    //行为,可以包含多个
    [权限修饰符] 返回值类型 成员方法名(形参列表) {
        具体功能实现
        }
    [权限修饰符] 类名(形参列表) {
    初始化语句
    }
}
类的定义步骤: 
  •         定义类
  •         编写类的成员变量
  •         编写类的成员方法 

案例: 

class Student{
    //    类 = 属性 + 行为
    public long id;//学号
    public String name;
    public Date dob;//出生日期
    public double score;//成绩
    public String schoolName;//学校

    //        定义(非静态方法)方法
    public void learn() {
//            学生的学习行为
        System.out.println("learn....");

    }


}

 上述案例中,我们定义了学生类Student;注意,Student是一种数据类型,是自定义类类型,属于引用类型;

类类型使用时跟int、double、String等类型类似,都必须先定义变量并赋值,才能使用;
但是,类类型和基本数据类型定义变量的方式不同,描述方式也不同,具体如下:

//基本数据类型定义变量
int a = 10; //定义一个int类型变量a
double d = 2.3; //定义一个double类型变量d
//类类型定义变量
Student stu1 = new Student(); //实例化一个Student类对象s1
Student stu2 = new Student(); //实例化一个Student类对象s2

对象的使用 

 创建对象格式:

        类名 对象名  = new 类名();

调用成员格式: 
  • 对象名.成员变量;
  • 对象名.成员方法 ;

案例:

public class Test01 {
  int a;
  static int b;
    public static void main(String[] args) {

    // 实例化对象
    // 固定格式:类名 对象名 = new 类名();
        Student stu = new Student();
        stu.learn();
        // 输出对象属性的默认值
        // 对象属性访问格式:对象名.变量名
        System.out.println(stu.name); // null
        System.out.println(stu.age); // 0
        // 给对象属性赋值
        stu.name = "张三";
        stu.age = 23;
        // 输出结果:全类名@对象内存地址
        // 全类名:包名.类名
        System.out.println(stu);//****Student@1b6d3586
        System.out.println(stu.id);//同一个地址 对应的属性值一样
    }
}
class Student{
    //    类 = 属性 + 行为
    public long id;//学号
    public String name;
    public int age;
    //    定义(非静态方法)方法
    public void learn() {
//            学生的学习行为
        System.out.println("learn....");

    }


}
类的使用总结 
  • 一般Java程序会写两个类:基础类,测试类
  • 基础类就是我们要实现封装出来的那个类
  • 测试类就是包含main方法的类
  • 注意:只能在一个类中定义main方法,其是程序的入口,必须唯一 

 对象内存

public class Test {
    public static void main(String[] args) {
    //实例化一个对象
    Student stu = new Student();
    stu.name = "tom";
    stu.sayHello();
    }
}

对象内存图: 

程序运行过程: 

  1. 加载Student类:把Student.class文件内容加载到方法区中
  2. 加载main方法并运行:整个main方法的代码都被加载到栈区中
  3. 创建引用类型变量:在栈空间中开辟一块内存空间,用stu标识 
  4. 在堆中开辟内存创建对象,并给属性赋上默认初始值
  5. 将堆空间对象内存地址值放入stu标识的内存区域中
  6. 对象属性赋值:将"tom"和20放入堆空间对象内存区域内
  7. 对象方法调用:找到方法区sayHello方法对应的代码,执行
  8. main方法继续执行,遇到 } ,程序执行结束
封装的特性 
概念 

        封装是面向对象三大特征之一,另外两个是继承,多态。
        封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 

封装的优点:
  •         通过方法来控制成员变量的操作,提高了代码的安全性
  •         把代码用方法进行封装,提高了代码的复用性
  •         隐藏代码实现细节,提供公共访问方式,简化操作
封装的原则
  •  把不需要对外提供的内容隐藏起来。
  • 把属性隐藏,提供公共方法对其访问。
 private

private、public等权限修饰符,都是用来修饰成员变量、成员方法和构造方法的 。

private表示私有,用它修饰类的成员(含成员变量、成员方法),则这些成员只能在类内(类的成员函数内部)去使用,其他地方不可以操作;
public表示公有,用它修饰类的成员(含成员变量、成员方法),则这些成员在
类内、类外都都可以操作。

实现封装 
  • 使用private修饰成员变量
  • 提供对应的set和get方法,用public修饰这些方法,IDEA快捷键:Alt+Insert
  • 实例化对象后,借助该对象的set方法给对象的属性赋值,get方法获取对象中的属性值。

实例: 

package 自己的包名;

/**
 * @author 谭梦寻
 * @version 1.1
 */
class Person {
    private String id;
    private String name;
    private String address;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

 
}



public class TestPerson {
    public static void main(String[] args) {
        //1.实例化对象,使用系统提供的无参构造器
        Person person = new Person();
        //2.在类外通过对象访问私有数据成员,编译报错
        //person.id = "001";

        //步骤3:具体使用时,借助对象的setXxx方法给属性赋值,getXxx方法获取属性值
        //3.借助set方法赋值
        
        person.setAddress("南昌");
        person.setId("12423");
        person.setName("小明");
        System.out.println(person.toString());//等价于person

    }
}

this关键字 

        在类中的普通成员方法中,可以使用this关键字, 其表示调用当前方法的对象引用,即哪个对象调用该方法,this就代表那个对象 。

 this关键字的用法
  • 对成员变量和局部变量进行区分(通常用于区分同名的局部变量和成员变量,非同名可以不使用,因为java编译器会默认调用this关键字访问成员变量)
  • 固定格式: this.数据成员;
  • 调用类中的成员方法
  • 固定格式: this.成员方法(实际参数列表);
  • 调用类中的其他构造器 ,格式:this(实际参数列表)

成员变量、局部变量、静态变量、静态方法、成员方法、构造方法的区别与联系 

        成员变量 :也叫全局变量,站在类的角度来说称为成员变量。它是定义在类里面,方法的外面,可以不赋予初始值,有默认的初始值。随着对象对象的存在而存在,对象的而消失而消失。

        局部变量:定义在方法里面,必须初始化(赋值)后才能进行操作。随着方法的调用而存在,方法调用结束就被回收,没有默认初始值。

        静态变量:又称静态属性,可以直接使用的属性。它是属于类的,为这个类的所有对象共享,只占用一块内存空间.

        非静态变量:又称非静态属性,不能直接使用,必须创建了类之后才能使用,类名.属性名

        静态方法:站在修饰符的角度(static),静态方法才可以直接在代码中调用 如main方法是static方法。static方法可以在没有对象实例的时候直接调用, 故可以直接调用main方法。

        非静态方法:如果没有对象实例,就不能调用非静态方法。 非静态方法之间可以相互直接调用(java编译器会自动加上this)。

        构造方法:(从返回值的角度)没有返回值,只有创建对象的意义,方法名和类名完全相同(区分大小写)

        成员变量前加上static也是静态方法,不加static是非静态变量。区分是否是静态变量只需要看是否有修饰符static。同理,静态方法 也是如此。

构造方法 

        构造方法可以对对象进行初始化操作,即为对象开辟内存空间的时候,给对象的成员成员赋初值。

构造方法的格式
[修饰符] 类名(参数列表) {
    初始化语句s;
}
构造方法的注意事项: 
  • 构造方法一般使用 public 修饰,但如果是工具类可以使用private,如String等
  • 构造方法没有返回值类型
  • 构造方法名和类名相同(区分大小写)
  • 构造方法可以重载
  • 每一个类会默认有一个无参构造方法(无参构造器),但是一旦定义了有参构造器,会覆盖掉默认的无参构造器,所以通常设置了有参构造器会另外定义一个无参构造器。
构造方法案例: 
public class Person {
    private String id;
    private String name;
    private String address;

    //    每个类都默认有一个无参构造器 方法名就是类名 没有返回值 有方法体
    public Person() {
//        这儿显式的给出,实际上本身就有
    }

    //      有参构造器 实现创建对象并赋值
//    注意定义了有参构造器 会覆盖掉默认的无参构造器
//    所以定义了有参构造器 最好重新定义一个无参构造器
//    包含三个参数的构造方法
    public Person(String id, String name, String address) {
//      赋值语句
        this.id = id;
        this.name = name;
        this.address = address;
    }
//      含两个参数的构造方法
    public Person(String id, String name) {
        this.id = id;
        this.name = name;
    }



}

智能体开发套件(ADK)介绍 city } ---") city_normalized = city . lower() . replace(" " , "") # 模拟天气数据库 mock_weather_db = { 阅读详情

相关推荐

一文详解Stata重复测量方差分析的概念、原理、适用情形以及操作命令实现、对结果的解读、操作注意事项 附零基础小白友好入门Stata统计学/计量经济学学习路径

重复测量方差分析(Repeated Measures ANOVA)适用于同一受试者在不同时间点或条件下的多次测量数据,如疗效跟踪和跨条件对比研究。其核心特征包括:数据结构为每个受试者多个观测值,数据具有相关性(违反独立性假设),变异分解为个体间和个体内变异。关键假设包括正态性、方差齐性和球形性(通过Mauchly检验验证)。适用场景包括纵向研究和小样本追踪,但不适用于存在滞留效应或学习效应显著的数据。操作步骤涉及数据准备(宽/长格式转换)、正态性与球形性检验、主分析命令(单/多因素)及事后检验。

m0_72274883的博客 1565

Java面向对象编程

Java面向对象编程基础........

WXS153322的博客 1066

RDMA网络通信技术、NCCL集合通讯(GPU)

NCCL 是 NVIDIA 专为 GPU 设计的高性能集合通信库,用于优化多 GPU、多节点间的集体操作(如 AllReduce、Broadcast、AllGather 等),是深度学习分布式训练的核心组件。RDMA 允许计算机直接访问远程内存,无需 CPU 干预,大幅降低了网络通信的延迟和 CPU 开销。常见的 RDMA 实现包括。是两项关键技术,用于优化节点间数据传输效率和大规模并行计算性能。在高性能计算(HPC)、人工智能训练和数据密集型场景中,

weixin_42795092的博客 2422

JAVA面向对象编程(详细 全部)

当多个类存在相同的属性[变量]和方法时,可以从这些类中抽象出 父类,在父类中定义这些相同的属性和方法,只需要通过 extends 来 声明继承父类即可//抽象方法//抽象方法,只声明不实现//普通方法System.out.println(name+"吃饭!");System.out.println(name+"睡觉!");//构造器//必须帮助抽象父类实现构造//必须重写抽象方法@OverrideSystem.out.println("唱,跳,rap,打篮球!");

A129837的博客 2800

深入理解HanLP1.x,填平可能遇到的坑

提取指定数量的摘要。自定义词典为什么要单独领出来讲呢?因为在我们的业务开发中,可能分词的效果并不理想,需要定制自己的词库,索引更加常用。例如:小米su7特斯拉modelY比亚042025款6575767670908我们需要分出小米su72025款等词。我们分别看看用字典和不用字典的效果。

static_coder的博客 977

NHANES更新数据后,权重计算方式也更新了

官网说明在此:如果你比我还懒,我下载了几个说明文件。2021年8月至2023年8月的总样本量与之前的2年周期相似。然而,。特别是,与之前包括过度抽样的周期相比,非西班牙裔白人的样本量较高,而非西班牙裔黑人的样本量较低。此外,60岁及以上人群的样本量较高,而年轻群体的样本量较低。子组的估计值可能具有较低的精确度,因此,检测组间差异的统计能力可能较低。此外,年龄和种族/西班牙裔亚组(尤其是儿童和青少年年龄组)的估计值可能会显示意想不到的模式。

珏世佳人的博客 2410

JAVA 面向对象编程

在Java中,对象(Object)是指类(Class)的一个实例化(Instantiation)。Java是一种面向对象的编程语言,它的核心思想是将现实世界中的事物抽象成类,并通过创建对象来操作和处理这些类。对象具有以下特点:状态(State):对象可以具有一些称为属性(Attributes)或成员变量(Instance Variables)的状态信息。这些状态信息描述了对象的特征和属性。行为(Behavior):对象可以执行一些操作,称为方法(Methods)。方法定义了对象可以进行的操作和行为。

没技术的博客 1621

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版为 7.2.1-69057 Update 5。MetaTube是一个媒体服务器插件,主要用于Emby和Jellyfin媒体服务器。它的主要功能是从互联网上抓取内容并响应 JSON 数据,然后通过预安装的 MetaTube 插件请求服务器并下载相应的元数据,以与 Jellyfin/Emby 服务器配合使用。使用 MetaTube 的步骤大致如下:部署后端:首先,需要部署一个名为​ 的后端 API 服务器来抓取内容。

小小笔记大大用处 1万+

Java 面向对象编程

类(Class)和对象(Object)是面向对象的核心概念。类: 具有相同特征的事物的抽象描述,是抽象的、概念上的定义。对象: 实际存在的该类事物的每个个体,是具体的,因而也称为实例可以理解为:类 => 抽象概念的人;对象 => 实实在在的某个人面向对象程序设计的重点是类的设计 类的设计,其实就是类的成员的设计现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的。同理,Java 代码 世界是由诸多个不同功能的类构成的。现实生物世界中的细胞又是由什么构成的呢?细胞核、细胞质、...

huangjianfeng21的博客 589

Xilinx差分原语-IBUFGDS与OBUFGDS FPGA

它将差分信号转换为单端信号,并将其输入到FPGA的逻辑片上。它将单端信号转换为差分信号,并将其输出到FPGA的引脚。在FPGA设计中,差分信号是一种常见的信号传输方式,用于提高抗噪性和抑制共模噪声。Xilinx是一家知名的FPGA供应商,提供了许多差分原语,其中包括IBUFGDS和OBUFGDS。通过使用Xilinx的差分原语,如IBUFGDS和OBUFGDS,可以实现差分信号的输入和输出。这些差分原语提供了方便且可靠的接口,使得在FPGA设计中处理差分信号变得更加简单和高效。是差分输入信号的端口,

git_database727的博客 2096

《网络安全自学教程》- OSI七层模型分层及作用,数据封装与解封过程,数据传输过程。

OSI分哪七层,每层的作用是什么,解释数据在七层模型中是怎样传输的,封包和解封过程,数据包在每一层是怎么封装和解封的。

wangyuxiang946的博客 1万+

JAVA面向对象

JAVA面向对象

理想主义的花终将盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 1176

详细分析一下华为自研的MetaERP系统中的合并报表流程与规则

华为MetaERP合并报表系统针对其全球化复杂业务量身定制,采用五层自动化架构:统一数据采集、多币种转换、智能对账协同、规则化抵消处理及多维分析输出。系统核心在于可配置的智能规则引擎,涵盖股权合并范围、内部交易抵消、未实现利润计算等复杂场景,实现多准则并行处理。相比传统软件,该系统深度集成业务数据、支持准实时合并,并通过参数化配置快速适应组织变革,成为华为全球财务管控的"数字神经中枢",在效率、准确性和安全性上具有显著优势。

金牌架构师 673

Java基础篇面向对象作业—01

Java基础篇面向对象作业—01 问题一:什么是面向对象? 面向对象是一种编程思维,是相对于传统的面向过程的思维来讲的; 传统的面向过程强调的是解决问题的具体步骤,具体方法,编程思路是自顶向下,不断分解地解决问题。 面向对象更加强调解决问题的主体,谁来解决问题,创建可以解决问题的对象,来操作数据,面向对象的编程思路是自底向上,不断拼接; 面向对象的好处有很多,比如面向对象更符合人类的思维模...

Steven_YE 239

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java面向对象基础

一、前言 我们上次学过java的方法,现在我们来学习新的一篇,也算是java中比较重要的一节了 面向对象基础是java中核心。 面向对象主要包括封装、继承、多态 我们这节主要讲的是封装,在这之前我们先来了解一下类和对象的定义和关系 什么是对象? 世间一切都是对象,万物解释对象,对象就是看得见摸得着的东西。 什么是类? 类是现实生活中对具有属性和行为同一类的总称。 类和对象的关系? 类是对象的抽象化,对象是类的实例化 类的定义 ? 类是java中的基本概念,java中

weixin_60719453的博客 9327

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JAVA基础之面向对象

面向过程POP(ProcedureOrientedProgramming),是一种基本的编程思想,在面对一个需要解决的问题时,将问题按流程逐步实现,注重执行的细节。用于修饰类和方法,表示抽象的。修饰方法,该方法称为抽象方法,没有方法体,同时该方法所在类一定也要使用abstract修饰成为抽象类。抽象方法只能出现在抽象类中,不能出现在普通类中。抽象类中可以没有抽象方法抽象类中有构造方法,但该构造方法不能使用new调用,所以抽象类不能创建对象抽象类中的构造方法,在创建其子类对象时自动调用。...

Yc_Lq的博客 856

Java基础与面向对象

Java基础和面向对象基础

qq_74078496的博客 1169

Java基础篇面向对象总结

"理解万事万物皆对象" 基本类型和引用类型 匿名对象的使用 方法重载loading.... 方法重写 方法重载与方法重写的区别: 可变个数的形参 递归地使用 封装和隐藏 四种权限修饰符 继承 多态 属性 方法 构造器 代码块 内部类(了解) this关键字 package关键字 import关键字 super关键字 instanceof关键字 static关键字 abstract关键字 Interface关键字 equals() toString()方法 单例模式

weixin_44606952的博客 5232

【Java】Java基础+面向对象

复习

Answer的博客 767

Java基础语法到面向对象详解

本文是一篇Java入门学习笔记,从java基础语法过度到面向对象三大特性等进阶详解

冬眠猫的博客 7946

Java基础 —— 面向对象

java基础之面向对象

小熊的学习记录 1022

java面向对象基础

首先每一部电影,都包含这部电影的相关信息,比如:电影的编号(id)、电影的名称(name)、电影的价格(price)、电影的分数(score)、电影的导演(director)、电影的主演(actor)、电影的简介(info)。为了去描述每一部电影,有哪些信息,我们可以设计一个电影类(Movie),电影类仅仅只是为了封装电影的信息,所以按照JavaBean类的标准写法来写就行。

是程序喵呀 1847

Java面向对象基础小练习。

    最后回顾一遍面向对象基础部分,后面就开始慢慢进阶了。    所有题目均来自:https://www.jianshu.com/p/886252693889    在练习中,有意识的规范代码格式,发现新东西,这才是练习的目的。    原帖中源代码就不贴上来了,贴上的的均为本人所编写,类、变量命名参考原帖。    【练习题】01.类的成员变量 猜数字游戏一个类A有一个成员变量v有一个初值100。...

yaerpi的博客 2169

Java基础之面向对象

参考学习资源:https://www.bilibili.com/read/cv5216534/?spm_id_from=333.788.b_636f6d6d656e74.5 Java面向对象学习面向对象(Object-oriented)内容的三条主线4.1 面向过程与面向对象4.1.1学习面向对象(Object-oriented)内容的三条主线例子:“人把大象装进冰箱”4.1.2 面向对象的两个元素:一、设计类:就是设计类的成员二、类和对象的使用三、类中属性和方法的使用类中属性的使用类中方法的声明和使用练习

qq_39763002的博客 820

JAVA面向对象基础

JAVA面向对象基础 此博主写的不错 java面向对象基础–超链接

qq_43553938的博客 353

Java面向对象基础总结

基础知识 面向过程(POP) 与 面向对象(OOP) 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等 bJavaBean JavaBean是一种Java语言写成的可重用组件。 所谓javaBean,是指符合如下标准的Java类: 类是公共的 有一个无参的公共的

qq_41784749的博客 1020
上一篇: java基础之数组
下一篇: JavaScript之ES6新特性01
谭梦寻
博客等级 码龄5年 937粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值