Java重点梳理类与对象核心原理

目录
  • 前言
  • 一、类与对象的基本关系
  • 二、类与对象的使用
    • 1.类的定义
    • 2.对象的创建
    • 3.对象的使用
    • 4.在类定义内调用方法
  • 三、参数传递
    • 1.以变量为参数调用方法
    • 2.以数组为参数或返回值的方法调用
  • 四、匿名对象
  • 五、本篇总结

前言

在前面的篇章中,对Java语言的简单数据类型、数组、运算符和表达式以及流程控制的方法做了详细介绍。从本章开始,我们正式介绍面向对象的程序设计方法!

面向对象的编程思想是力图使在计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能一致。在面向对象的程序设计中,类和对象是面向对象程序设计方法中最核心的概念。

一、类与对象的基本关系

对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

类:类是一个模板,它描述一类对象的行为和状态。

下图中男孩(boy)、女孩(girl)为 类(class),而具体的每个人为该类的 对象(object):

下图中汽车为类(class),而具体的每辆车为该汽车类的对象(object),对象包含了汽车的颜色、品牌、名称等。

二、类与对象的使用

1.类的定义

类可以看成是创建 Java 对象的模板。

通过上图创建一个简单的类来理解下 Java 中类的定义:

public class Dog {
    String breed;
    int size;
    String colour;
    int age;
    void eat() {
    }
    void run() {
    }
    void sleep(){
    }
    void name(){
    }
}

2.对象的创建

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

① 声明:声明一个对象,包括对象名称和对象类型。

② 实例化:使用关键字 new 来创建一个对象。

③ 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

下面是一个创建对象的例子:

public class Dog{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name );
   }
   public static void main(String[] args){
      // 下面的语句将创建一个Dog对象
      Puppy myDog = new Dog( "小黑" );
   }
}

编译并运行上面的程序,会打印出下面的结果:

小狗的名字是 : 小黑

3.对象的使用

创建对象后,就可以对对象的成员进行访问。通过对象来引用对象成员的格式如下:

对象名.对象成员

例如,将对象circle的半径赋值为1.2,其代码为:

circle.radius=2.8;

4.在类定义内调用方法

下面的例子展示如何访问实例变量和调用成员方法:

public class Dog{
   int dogAge;
   public Dog(String name){
      // 这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name );
   }
   public void setAge( int age ){
       dogAge = age;
   }
   public int getAge( ){
       System.out.println("小狗的年龄为 : " + dogAge );
       return dogAge;
   }
   public static void main(String[] args){
      /* 创建对象 */
      dog myDog = new Dog( "小黑" );
      /* 通过方法来设定age */
      mydog.setAge( 2 );
      /* 调用另一个方法获取age */
      mydog.getAge( );
      /*你也可以像下面这样访问成员变量 */
      System.out.println("变量值 : " + myDog.dogAge );
   }
}

以上程序运行结果为 :

小狗的名字是 : 小黑
小狗的年龄为 : 2
变量值 : 2

三、参数传递

从上面所介绍的方法的语法格式可以看出,方法既可以有返回值也可以有参数。

1.以变量为参数调用方法

调用方法并传递参数时,参数其实就是方法的自变量,所以参数要放在括号内来进行传递。括号内的参数可以是数值型、字符串型、甚至是对象。

我们就用一个圆柱体类Cylinder介绍变量的调用方法:

public class Demo{
    public static void main(String[] args){
        Cylinder volu = new Cylinder();
        volu.setCylinder(2.5,5,3.14);
        System.out.println("底面半径"+volu.radius);
        System.out.println("圆柱的高"+volu.height);
        System.out.println("圆周率"+volu.pi);
        System.out.println("底面积"+volu.area());
        System.out.println("园柱的体积"+volu.voluem());
    }
}
class Cylinder{
    double radius;
    int height;
    double pi;
     void  setCylinder(double r, int h, double p){//这是具有三个参数的方法
        pi = p;
        radius = r;
        height = h;
     }
        double area() {
            return pi*radius*radius;
        }
        double voluem(){
            return area()*height;
        }
    }

程序运行结果为:

底面半径2.5

圆柱的高5

圆周率3.14

底面积19.625

园柱的体积98.125

2.以数组为参数或返回值的方法调用

①数组作为调用方法的参数

三要素:
     返回值类型:只是打印而已,不需要进行计算,也没有结果,用void
     方法名称:prinArray
     参数列表:必须给我数组,我才能打印其中的元素,int[]array

举例:

public class Demo{
    public static void main(String[] args) {
        int[]array={10,20,30,40,50};
        printArray(array);
        System.out.println("AAAAAA");
    }
    public static void printArray(int[]array){ //必须有参数列表
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            }
        }
    }

程序运行结果为:

10
20
30
40
50
AAAAAA

②数组作为返回值类型

  • 一个方法有0、1多个参数,但是只能有0个或者1个返回值,不能有多个返回值
  • Q:如果希望一个方法当中产生了多个数据进行返回,怎么办?
  • A:可以写入一个数组里面
  • 任何数据类型都能作为方法的参数类型,或着返回值类型。
  • 数组作为方法的参数,传进去的是其实是数组的地址值。
  • 数组作为方法的返回值,返回其实也是数组的地址值。

举例:

public class Demo {
    public static void main(String[] args) {
        int[] result=caculate(10,20,30);
        System.out.println("main方法接收到的返回值是");
        System.out.println(result);//地址值
        System.out.println("总和是"+result[0]);
        System.out.println("平均数是"+result[1]);
    }
    public static   int[] caculate(int a,int b,int c){
        int sum=a+b+c;//总和
        int avg=sum/3;//平均数
        //两个结果都希望进行返回
        //需要一个数组,也就是一个塑料兜,数组可以保存多个信息
        int []array={sum,avg};
        System.out.println("caculate方法内部的数组是");
        System.out.println(array);//地址值
        return array;
    }
}

程序运行结果为:

caculate方法内部的数组是
[I@776ec8df
main方法接收到的返回值是
[I@776ec8df
总和是60
平均数是20

四、匿名对象

当一个对象被创建之后,在调用该对象方法时,可以不定义对象的引用变量,而直接调用这个方法的对象,这样的对象叫做匿名对象。

例如将上面 圆柱体类Cylinder 介绍变量的代码段中

Cylinder volu = new Cylinder();

volu.setCylinder(2.5,5,3.14);

改写为:

new Cylinder().setCylinder(2.5,5,3.14);

则new Cylinder()就是匿名对象。这个语句没有声明任何对象,而是直接用new运算符创建了Cylinder类的对象并直接调用了它的setCylinder()方法。这个语句的执行结果与改写前的执行相同。当这个方法执行完后,这个对象也就成为了垃圾。

匿名对象使用场景:

1:当对方法只进行一次调用的时候,可以使用匿名对象。

2:当对象对成员进行多次调用时,不能使用匿名对象。必须给对象起名字。

例如将匿名对象作为一个参数传递给一个方法,如:

public void getPerson(Person p);{
......
}

可以用下面的语句调用这个方法:

getPerson(new Person());

五、本篇总结

1.“类”是把事物的数据与相关的功能封装在一起,形成的一种特殊结构,用来表达现实世界的一种抽象概念。

2.同一个Java程序内,若定义了多个类,则最多只能有一个类声明为public,这种情文件名称必须与声明成public的类名称相同。

3.Java 语言把数据成员称为“成员变量" ,把函数成员称为“成员方法”,成员方法简为“方法”。

4.“封装”是指把变量和方法包装在一个类内,以限定成员的访问,从而达到保护数据的一种技术。

5.由类所创建的对象称为“实例”。

6.创建属于某类的对象,可以通过下面两个步骤来完成: (1)声明指向“由类所创建的对象”的变量; (2)利用new运算符创建新的对象,并用步骤(1)所创建的变量来指向它。

7.要访问到对象里的某个成员变量时,可以通过“对象名.成员变量名"的形式来实现若要调用封装在类内的方法时,则可以使用“对象名.方法名()”的语法形式来完成。

8.如果要强调“对象本身的成员”,可以在成员名前加上this 关键字。即“this. 成员名”,此时的this即代表调用该成员的对象。

9.若方法本身没有返回值,则必须在方法定义的前面加上关键字void.

10.类外部可访问到的类内部的公共成员。

11.方法的参数可以是任意类型的数据,其返回值也可是任意类型。

12.所谓匿名对象,就是当一个对象被创建之后,在调用该对象的方法时,不定义对象的引用变量,而直接调用这个对象的方法,这样的对象叫做匿名对象。

到此这篇关于Java重点梳理类与对象核心原理的文章就介绍到这了,更多相关Java类与对象内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 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 类与对象超基础讲解

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

  • Java全面细致讲解类与对象

    目录 类和对象的关系 类和对象的实例化 static关键字 private实现的封装 构造方法 this关键字 代码块 匿名对象 小结 类和对象的关系 类就是一类对象的统称.对象就是这一类具体化的一个实例. (对象是类的实例化) 对象是什么? 此对象非彼对象!!!说到对象就要提到过程. 面向过程:C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题.面向过程注重的是过程,在整个过程中所涉及的行为,就是功能. 面向对象:JAVA是基于面向对象的,关注的是对象,将一件事情

  • Java类和对象的设计原理

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

  • Java即将引入新对象类型来解决内存使用问题

    目录 一.Valhalla 二.Java类型系统的不足 三.对象头 四.Value Class 前言: 2022年Java将有什么新的特性和改进,我相信很多Java开发者都想知道.结合Java语言架构师布莱恩·格茨(Brian Goetz)最近的一些分享, 一.Valhalla 布莱恩·格茨在去年底发表了一篇名为State of Valhalla的文章,里面信息量非常大,里面提到早在2014年Java项目组就启动了一个名叫Valhalla的项目,这个项目将为JVM平台带来更加灵活的.扁平化的数据

  • java中类与对象的使用详情

    目录 1. 类的定义 2.对象的创建和使用 如何得到对象 如何使用对象 3.学生对象-练习 4.成员变量的默认值 1. 类的定义 面向对象是通过类和对象去描述和代表万千事物对象的,首先我们需要知道如何去定义一个类.类的组成是由属性和行为两部分组成 属性:在类中通过成员变量来体现(类中方法外的变量) 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可) 类的定义格式 类的定义步骤: ①定义类 ②编写类的成员变量 ③编写类的成员方法 public class 类名 { //

  • Java快速入门掌握类与对象及变量的使用

    目录 类 1.什么是类 2.想要知道Java中类是什么 3.怎么写一个类 对象 1.什么是对象 2.创建对象的格式 3.怎么使用对象中的属性 4.怎么使用对象中的行为 5.实例 变量 1.什么是局部变量 2.什么是成员变量 3.成员变量和局部变量的区别 类 1.什么是类 类是事物的属性(外在特征)和行为(具备的功能)的集合 2.想要知道Java中类是什么 我们要先知道现实生活中的类是什么,因为Java源于现实生活. 比如说人"类",为什么我们人类呢,因为我们什么都相似,我们都有共同的外

  • 浅谈java类和对象

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

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

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

  • Java重点梳理类与对象核心原理

    目录 前言 一.类与对象的基本关系 二.类与对象的使用 1.类的定义 2.对象的创建 3.对象的使用 4.在类定义内调用方法 三.参数传递 1.以变量为参数调用方法 2.以数组为参数或返回值的方法调用 四.匿名对象 五.本篇总结 前言 在前面的篇章中,对Java语言的简单数据类型.数组.运算符和表达式以及流程控制的方法做了详细介绍.从本章开始,我们正式介绍面向对象的程序设计方法! 面向对象的编程思想是力图使在计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能一致.在面向对象的程序设计中,

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

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

  • Java反射(Class类,Class对象获取)

    目录 Java反射超详解 1.反射基础 1.1Class类 1.2类加载 2.反射的使用 2.1Class对象的获取 2.2Constructor类及其用法 2.3Field类及其用法 Java反射超详解 1.反射基础 Java反射机制是在程序的运行过程中,对于任何一个类,都能够知道它的所有属性和方法:对于任意一个对象,都能够知道它的任意属性和方法,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制. Java反射机制主要提供以下这几个功能: 在运行时判断任意一个对象所属的类

  • Java 中的类和对象详情

    目录 1.类的定义 2.类中变量的类型 3.构造方法 4.重载方法 5.继承 5.1 重写方法 6.创建对象 7.访问实例变量和方法 8.比较对象 8.1 使用 == 比较对象 8.2 使用 equals() 比较对象 类可以看成是创建Java对象的模板 1.类的定义 public class Dog { String name; int age; void eat() { } void sleep() { } } 2.类中变量的类型 局部变量:在方法或语句块中定义的变量被称为局部变量.变量声明

  • 带你用Java全面剖析类和对象

    目录 一.面向过程?面向对象? 二.类和类的实例化 2.1普通成员变量和普通成员方法 2.2 静态成员变量和静态成员方法 三.封装 3.1 private 3.2 getter 和 setter 四.构造方法 4.1 基本语法 4.2 this 关键字 五.代码块 5.1 普通代码块 5.2 构造代码块 5.3 静态代码块 5.4 注意事项 六.快捷方法 6.1 toString方法 6.2 setter / getter 方法 6.3 构造方法(快捷) 总结 一.面向过程?面向对象? C 语言

  • Java面试重点中的重点之Elasticsearch核心原理

    目录 Elasticsearch简介 Elasticsearch是什么?它能干什么? 从核心概念开始 Lucence 核心数据结构 Document Index 倒排索引 FST 集群相关概念 节点 分片 总结 Elasticsearch简介 Elasticsearch是什么?它能干什么? Elasticsearch(以下称之为ES)是一款基于Lucene的分布式全文搜索引擎,擅长海量数据存储.数据分析以及全文检索查询,它是一款非常优秀的数据存储与数据分析中间件,广泛应用于日志分析以及全文检索等

  • java类和对象原理与用法分析

    本文实例讲述了java类和对象原理与用法.分享给大家供大家参考,具体如下: 面向对象编程OOP 类:相似对象的集合. 对象 对象:实体.一切可以被描述的事物. 属性:特征. 方法:动作,行为. 类和对象的区别 [1]类时抽象的,对象是具体的. [2]类是一个模板,创建出来的对象具备共同的属性和方法. [3]类是一种数据烈性.引用数据类型. 语法 public classs 类名{ //定义属性部分 属性1的类型 属性1: 属性2的类型 属性2: ... 属性3的类型 属性n; //定义方法部分

  • 一篇文章告诉你JAVA Mybatis框架的核心原理到底有多重要

    目录 持久层的那些事 什么是 JDBC JDBC 原理 什么是 Mybatis Mybatis 与 JDBC 的关系 SqlSession SqlSessionFactory SqlSessionFactoryBuilder Configuration MappedStatement Executor ParameterHandler StatementHandler ResultSetHandler Interceptor Mybatis 关键词说明 Mybatis 架构设计 基础支持层 反射

  • 解析Java的JVM以及类与对象的概念

    Java虚拟机(JVM)以及跨平台原理 相信大家已经了解到Java具有跨平台的特性,可以"一次编译,到处运行",在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就要谈及Java虚拟机(Java Virtual Machine,简称 JVM). JVM也是一个软件,不同的平台有不同的版本.我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件.Java虚拟机就是负责将字节码文件翻译成特定平

随机推荐