Java 类与对象超基础讲解

目录
  • 什么是面向对象
    • 面向过程与面向对象
  • 类与对象的使用
    • 类与对象的使用与说明
    • 对象的初始化
  • this的使用
  • 构造方法
    • this可以调用本类的构造方法

什么是面向对象

Java语言是一个纯面向对象的语言,面向对象的语言不仅只有Java,包括C++,PHP等

面向对象的编程思想简称 OOP(Object Oriented Programming),其基本特点就是封装,继承和多态。

面向过程与面向对象

想要弄清楚什么是面向对象,首先需要知道两者的区别

面向过程更注重程序的每一个步骤,用相应的函数来实现。

比如说,五子棋,面向过程就需要首先分析每一个步骤

1.实现游戏的开始

3.棋盘的搭建

4.玩家下棋,并打印新的棋盘

5.电脑下棋,并打印新的棋盘

6.判断输赢

7.返回并输出结果

对于面向对象来说,就需要找出相应的对象

1.电脑与玩家

2.棋盘

3.规则设置

这三条都属于对象,第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

将五子棋改成围棋,如果是面向过程的思想,就需要对多个步骤,函数进行修改和维护,而且面向过程,往往需要修改大量的代码,因为程序的每一个步骤都是相互联系的。而面向对象,仅仅只需要对对象进行维护,并且每一个对象之间独立性较强

所以相对于面向过程,面向对象有更好的维护,复用,和扩展功能

而我们的面向对象,只需要关注寻找对象,构建对象,使用对象这三点,关键是抽象出类出来

类与对象的使用

语法:

Java中的类是通过class关键字来定义的,其语法格式如下:

[修饰符] class 类名 [extends 父类名] [implements 接口名]{undefined

// 类体

}

这里的extends和implements为可选项,类体包括成员变量(又称为字段和属性)和成员方法

class后面的类名采用大驼峰

成员变量定义在类当中,方法的外面

类相当一个模板,根据这个模板,可以创造很多的对象,类是对象的抽象归纳,这里的类也可以看作是一种自定义类型

下面定义一个Person类,由名字年龄构成,成员方法为人的吃饭,睡觉等行为

class Person{
    public String name;
    public int age;
    public void eat(){
        System.out.println("吃饭");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
}

在使用这个类,必须先实例化一个对象,有类才有对象

对目标进行访问,首先这个目标肯定是一个实体,只有拥有一个实例化对象,才能对对象进行访问和修改,就相当于类只是一个图纸,只有做成一个物理模型,才能对这个模型进行修改。

那对象具体怎样创建呢?这个时候就需要用过new关键字去构建一个对象

Person per=new Person();

既然Person是一种自定义类型,那上述代码,前面就是类型,后面就是变量

这里的per是一个引用变量,存放的是对象的地址,这个引用指向的就是这个对象

类与对象的使用与说明

1.类是一种自定义类型,可以用来定义变量,在java中由类定义出来的变量我们称为成员变量

2.一个类可以定义多个变量,实例出来的对象会占用实际的物理空间,存储类成员变量

3.类实例化就相当于,生活中构建房子,类只是一个设计图,只设计出需要什么,但是无真是的建筑存在,只有真正实例化一个对象,才会分配储存数据,占用物理空间。

4.只有使用new关键字,才能实例化一个对象,才会分配一块内存

对象的初始化

当成功创建一个对象后,需要对该对象进行初始化

java中对对象进行初始化,需要使用 “.”操作符

如果不对对象进行初始化的话,默认该变量中的成员变量初值为对应相应的零值

public class classDemo {
    public static void main(String[] args) {
        //实例化一个对象
        Person per1=new Person();
        //对per1对象进行初始化
        per1.age=20;
        per1.name="zhangsan";
        per1.eat();
        per1.sleep();
        Person per2=new Person();
        //对per2对象进行初始化
        per2.age=30;
        per2.name="lisi";
        per2.eat();
        per2.sleep();
    }
}

this的使用

1.this可以代表当前对象的引用

2.可以避免成员方法参数与成员名称冲突,将成员变量与其他参数区别开

this.data//访问成员变量

this.fun();//访问成员方法

this();//调用构造方法,具体看下文构造方法

//定义一个日期的类
public class MyDate {

    public int year;
    public int month;
    public int day;

    /**
     * 设置日期:
     */
    public void setDate(int year,int month,int day) {
        this.year = year;
        this.month = month ;
        this.day = day;
        //如果不区分,就可能出现
        //year = year;
        //month = month ;
        //day = day;

    }

    public void printDate() {
        System.out.println("年:"+this.year+"月:"+this.month+"日:"+this.day);
    }

    public static void main(String[] args) {

        // this.printDate();

        MyDate myDate = new MyDate();

        myDate.setDate(2022,3,25);

        myDate.printDate();

    }
}

构造方法

代码:Person per=new Person();

你是否有疑惑为什么最后一个Person后面会跟一个括号

其实一个括号代表的是调用一个无参数的构造方法,当你编写的程序中,没有构造方法,系统其实就调用隐藏的无参数的构造方法,只不过这个构建函数无实际作用。如果程序存在构造方法,那系统就不会默认生成无参数的构造方法

什么是构造方法?构造方法与普通的成员方法有什么不同?

1.构造参数没有返回值,即使void也不行

2.构造方法中的方法名与该类的名字相同

构造方法仍然支持方法重载,调用哪一个方法,由参数列表决定

this可以调用本类的构造方法

   public Student() {
        //调用本类中   带有2个参数的构造方法,第一个参数的类型是String,第2个参数的类型是int
        this("gaobo",18);
    }

    public Student(String name,int age) {
        this.age = age;
        this.name = name;
        System.out.println("这个是带2个参数的构造方法!");
    }

操作可行的前提是,要保证this语句在该方法中最前面的一行,注释除外

并且不能形成环(两个构造方法相互调用)

java类中支持快速打印出成员变量,不需要自己写一个show方法来进行打印

    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

toString方法,它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法,toString 方法会返回一个“以文本方式表示”此对象的字符串。

IDEA快速生成toString方法的快捷键:鼠标右键->generate->toString

到此这篇关于Java 类与对象超基础讲解的文章就介绍到这了,更多相关Java 类与对象内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java 深入浅出解析面向对象之抽象类和接口

    目录 抽象类 声明抽象类 声明抽象方法 案例 使用规则 接口 声明接口 案例 接口特性 抽象类和接口的区别 抽象类 java语言,声明类时 abstract class Db{} 说明Db类为抽象类. java语言中,抽象方法是说没有方法的实现(方法体)此方法为抽象方法,只有抽象类和接口中才可以有抽象方法. 声明抽象类 声明抽象类很简单,加个abstract关节字就行. public abstract class AA { } 声明抽象方法 在抽象类中声明一个抽象方法,抽象方法没有方法体,就是说

  • Java 精炼解读类和对象原理

    面向对象.面向过程 什么是类? 什么是对象? 这是非常抽象的两个概念!!!!!!!! 在说清楚类和对象的概念之前,给大家讲一下什么是面向对象.面向过程,以此来推出我们类和对象的概念. 面向过程:以洗衣服为例:拿盆.放水.放衣服.放洗衣粉.手搓.换水.拧干.晾衣服,这个过程就是面向过程.  面向对象:以洗衣服为例:人把衣服放进洗衣机,倒入洗衣粉,洗完晾干,不需要关心洗衣服整个过程是怎么完成的,只需要找对象,创建对象,使用对象.在好比我们使用toString函数,我们并不关心toString函数具体

  • JavaSE的类和对象你真的了解吗

    目录 1.基本概念 1.1面向对象 1.2类和对象 2.类的定义及使用 2.1定义 2.2类的实例化 3.this引用 3.1访问成员变量 3.2访问成员方法 3.3this引用的特性 4.构造方法 4.1构造方法的特点 4.2this在构造方法中使用 总结 1.基本概念 首先我们需要弄清楚几个概念:面向对象是什么.类是什么.对象又是什么?还是逐个来说 1.1面向对象 我们常说Java是面向对象的语言,C语言是面向过程的语言,那面向对象是什么,它和面向过程的区别在哪? 面向对象是解决问题的一种思

  • Java对象级别与类级别的同步锁synchronized语法示例

    目录 1.对象级别的同步锁 2.类级别的同步锁 3.总结 Java synchronized 关键字 可以将一个代码块或一个方法标记为同步代码块.同步代码块是指同一时间只能有一个线程执行的代码,并且执行该代码的线程持有同步锁.synchronized关键字可以作用于 一个代码块 一种方法 当一个方法或代码块被声明为synchronized时,如果一个线程正在执行该synchronized 方法或代码块,其他线程会被阻塞,直到持有同步锁的线程释放.根据锁定的范围可以分为 类级别的锁可以防止多个线程

  • Java对象和Json文本转换工具类的实现

    目录 安装 下载源码 编译源码 添加依赖 Java对象 基本数据类型 数组 列表 字典 类 Java对象转换为Json文本 基本数据类型 数组 列表 字典 类 Json文本转换为Java对象 基本数据类型 数组 列表 字典 类 Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd durian/ 切换至最新版本(Tag),如:0.4, git chec

  • java 如何给对象中的包装类设置默认值

    目录 给对象中的包装类设置默认值 处理方法如下 java属性的默认值 给对象中的包装类设置默认值 处理方法如下 主要适用于,对象中使用了包装类,但是不能给null需要有默认值的情况 /** * 处理对象中包装类,因为快捷签没有用包装类 * * @param object 对象 */ public static void handleParamDefault(Object object) { Class<?> aClass = object.getClass(); Field[] declare

  • Java十分钟理清面向对象与类的核心

    什么是对象? 一切客观存在的事物都是对象 对象的组成 属性.行为 类是什么? 类是对大量对象共性的抽象 类是客观事物在人脑中的主观反映 类是创建对象的模板 类的组成 属性.行为 简单的说,一个类就是把公有的特征写在一起,然后由这个类创建的对象,都会都这个属性. 例如人这个类 属性会吃饭,会说话.我们就是对象,我们属于人这个类,因此我们也会吃饭说话. Java中类的定义 语法: public class Student{ //在这里面写成员属性.成员方法 } //Student就是这个类的名字,这

  • Java 超详细讲解类的定义方式和对象的实例化

    目录 1.面对对象的初步认识 1.1什么是面向对象 1.2面向对象与面向过程 2.类的定义与使用 2.1简单认识类 2.2 类的定义格式 3.类的实例化 3.1什么是实例化? 3.2重点笔记 总结 1.面对对象的初步认识 1.1什么是面向对象 用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计.扩展以及维护都非常友好. 1.2面向对象与面向过程 举一个买手机的例子 以面向对象的方式来处理买手机这件事的话,我们就不需要关注买手机的过程,具体手机怎么买,如何到手,用户不用去关心,

  • 深入浅出分析Java 类和对象

    目录 一.什么是类 二.Java的类和C语言的结构体异同 三.类和类的实例化 类的声明 实例化的对象,成员遵循默认值规则 类的实例化 静态属性(静态成员变量) 四.构造方法 创建构造方法 this 一.什么是类 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础.类是一种用户自定义的引用数据类型,也称类类型.每个类包含数据说明和一组操作数据或传递消息的函数,类的实例称为对象 类的实质是一种引用数据类型,类似于 byte,shor

  • Java 类与对象超基础讲解

    目录 什么是面向对象 面向过程与面向对象 类与对象的使用 类与对象的使用与说明 对象的初始化 this的使用 构造方法 this可以调用本类的构造方法 什么是面向对象 Java语言是一个纯面向对象的语言,面向对象的语言不仅只有Java,包括C++,PHP等 面向对象的编程思想简称 OOP(Object Oriented Programming),其基本特点就是封装,继承和多态. 面向过程与面向对象 想要弄清楚什么是面向对象,首先需要知道两者的区别 面向过程更注重程序的每一个步骤,用相应的函数来实

  • Java Scala数据类型与变量常量及类和对象超详细讲解

    目录 一.数据类型 二.变量和常量 三.类和对象 3.1 类 3.2 对象 3.3 伴生类和伴生对象 3.4 Scala的main函数只能写在object里 总结 一.数据类型 简记: 所有基础类型基本与Java的包装类等同,唯一有不同的Int(Scala),Integer(Java),注意这个就好 Unit, Null, Nothing, Any, AnyRef, AnyVal,这几个除了Null乍一眼会有些陌生,不要怕,上总结: 首先是层级图: 然后是表格: 补丁: 记住Any是所有类型的超

  • Java 超基础讲解String的使用

    目录 1.String概述 2.特点 3.String构造方法 4.String对象的特点 5.字符串的比较 6.实现用户登录 四.总结 1.String概述 String类在java.lang包下,所以使用的时候不需要导包. String类代表字符串,Java程序中的所有字符串文字(如:"abc")都被实现为此类的实例. 2.特点 字符串不可变,他们的值创建后不能被更改 虽然String的值是不可变的,但是它们可以被共享 字符串效果上相当于字符数组(char[ ] ),但是底层原理是

  • Java 超基础讲解String的使用

    目录 1.String概述 2.特点 3.String构造方法 4.String对象的特点 5.字符串的比较 6.实现用户登录 7.总结 1.String概述 String类在java.lang包下,所以使用的时候不需要导包. String类代表字符串,Java程序中的所有字符串文字(如:“abc”)都被实现为此类的实例. 2.特点 字符串不可变,他们的值创建后不能被更改 虽然String的值是不可变的,但是它们可以被共享 字符串效果上相当于字符数组(char[ ] ),但是底层原理是字节数组(

  • Java SpringMVC数据响应超详细讲解

    目录 1)页面跳转   2)回写数据 3)配置注解驱动 4)知识要点 1)页面跳转   直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转.  返回带有前缀的字符串: 转发: forward:/WEB-INF/views/index.jsp 重定向: redirect:/index.jsp 通过ModelAndView对象返回 @RequestMapping("/quick2") public ModelAndView quickMethod2(){ ModelAn

  • Java TCP协议通信超详细讲解

    目录 什么是tcp 服务端 客户端 服务端与客户端代码实现实例 什么是tcp Tcp通信有两个特点分别是面向连接,具有可靠性. 面向连接:指的是客户端与服务端之间的连接,在通信之前会有三次握手的机制来确保连接的可靠性. 可靠性:tcp在确保他的可靠性上做了许多的功夫,这个可靠性体现在下面两方面: tcp有状态:tcp会精确的纪录哪些数据是发送了的,哪些是没有被发送的,他保证数据包是按序到达的,不允许存在半点差错 tcp是可以控制的:如果存在丢包或者网络不好的时候,会根据具体情况对数据包进行发送速

  • 浅谈java类和对象

    目录 一.面向对象的描述 二.类和对象的基本概念 三.类定义和使用 1.简单认识类 2.类的定义 3.实例化对象 4.类的三大特性 封装 继承 多态 一.面向对象的描述 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言. 但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自

  • Java类和对象的设计原理

    目录 一.实验目的 二.实验代码 1.定义一个类MyProgram,包含两个属性: 2. 在Vehicle类的基础上创建一个Tractor(拖拉机)类 3. 组合实现汽车类 5. USB接口程序设计 6.this关键字主要有三个应用: 7.请简述static关键字的作用 8.请简述super关键字的作用 9.请简述final关键字的作用 一.实验目的 1. 掌握面向对象的编程思想.类与对象: 2. 掌握类的封装性.继承性和多态性的作用: 3. 掌握成员变量和成员方法的特性.构造方法.toStri

  • 全面理解Java类和对象

    面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.在面向对象程序设计(OOP)中,不必关心对象的具体实现.在传统的结构化程序设计中,算法是第一位的,数据结构是第二位的,即首先确定如何操作数,再考虑如何组织数据,以方便操作.而OOP则颠倒了这种次序,将数据放在第一位,然后再考虑操作数据的算法. 一.类 类是构造对象的模板和蓝图.通俗地说,类相当于建筑的图纸,而对象相当于建筑物.由类构造对象的过程称为创建对象的实例. Java中通过关键字class定义"类"

随机推荐