Java——对类与对象的讲解(精通)

前言

        本文干货较多,不是速成,而是系统的细致的讲解。需要读者花费一定的时间进行学习,建议先收藏保存,日后仔细学习,我会持续更新JAVA内容。(ps:本文需要读者有C语言基础)

        Java面向对象编程的核心思想包含封装性、继承性、多态性。本文主要介绍Java的封装性——类与对象。封装性作为面向对象编程的核心思想之一,就是将数据和对数据的操作封装在一起,通过抽象,即从具体的实例中抽取共同的性质,形成一般的概念——类的概念

目录

前言

一、类的定义

1、类声明

2、类体

* 变量的声明:用来储存属性的值。

* 方法体的定义:方法可以对类中的变量进行操作,即给出算法。

3、几个值得注意的问题

二、对象

1、创建对象

        对象的声明

        为对象的声明

        对象的内存模型

        对象的使用

总结



一、类的定义

        类的定义包含两个部分:类的声明类体

Class 类名{
    类体的内容;
}

1、类声明

        作为一个合格的程序员,在声明类时对类名的命名时最好使用驼峰命名法每个单词的首字母大写)例如:HelloChina,AmericanTime之类的命名方法。

2、类体

        类声明之后的“{}”里的内容被称作类体。类体的内容一般包含变量声明和方法体的定义以下两个内容

* 变量的声明:用来储存属性的值。

        变量声明部分声明的变量被称作类的成员变量

                成员变量:在整个类中都可以使用

                局部变量:仅在方法体中可以使用

        方法体中声明的变量方法的参数叫做局部变量

                成员变量的隐藏:当成员变量与方法体中的局部变量重名时,编译器会自动将成员变量隐藏,使这个成员变量暂时在这个方法体中失效。若想要在使用这个成员变量时就需要用 “this.成员变量名”来引用成员变量。

* 方法体的定义:方法可以对类中的变量进行操作,即给出算法

       ( 方法体的的定义就像是C语言中函数的定义相似,不过Java中的方法名可以为中文)

        方法重载:(方法重载是多态性的的一种)一个类中可以有同名的多个方法,java的程序会自动根据你给的参数类型、个数来选择执行哪一个程序

例如下段代码。

class area{
    float getarea(float r)
    {
        return 3.14f*r*r;
    }
    double getarea(float x,float y)
    {
        return x*y;
    }
}

        构造方法是一种特殊定义的方法体,它的名字必须与类名相同而且没有类型和返回值

class Trapezium{                 //类声明
    float up,down,high,S;        //变量声明部分
    Trapezium(){                 //构造方法的定义
        S=(up+down)*high/2.0f;
    }
}

        类方法、实例方法:方法类型前面加关键字static修饰的是类方法;不加static的是实例方法

class area{
    int a;
    static float getarea(float r)//类方法
    {
        return 3.14f*r*r;
    }
    float get(int a){            //实例方法
        System.out.println(a);
        return a;
    }
}

3、几个值得注意的问题

         *对于成员变量的任何操作都必须要放到方法中

                因此赋值的操作就有了一个注意的问题

class A{
    int a = 10;  //合法,在初始化的时候进行赋值是可以的
    int b;
    b = 10;      //不合法,因为对成员变量的操作必须都要放到方法中
}

        *实例方法既能对类变量操作又能对成员变量操作,而类方法只能对类变量进行操作

class A{
    int a;
    static int b;
    void f(int x,int y){
        a=x;            //合法
        b=y;            //合法
    }
    static void g(int z){
        a=z;            //非法
        b=z;            //合法
    }
}

        *一个类中的方法可以相互调用,实例方法可以调用该类中的实例方法、类方法,但是类方法只能调用类方法(这个注意事项类似于第二条,就不再用代码解释了)

        *构造方法没有类型前缀

class Point{
        int x, y;
        Point(){                  //是构造方法
            x = 1;
            y = 1;
        }
        void Point( int a, int b){ //不是构造方法(该方法的类型是void)
                x = a;
                y = b;
        }
}

二、对象

1、创建对象

        对象的声明

                *创建对象包括对象的声明对象分配变量的两个步骤

                        一般格式为:

                        类的名字    对象名字;(以上一代码段class Point为类名)

              例如: Point           A          ;

        为对象的声明

                *为对象声明需要使用到new运算符,后续的使用方法和C语言的结构体相当类似

在这里我们用西游记的人物的代码来解释

class xiyouji{
    float height,weight;
    String head,ear;
    void speak(String s){
        System.out.println(s);
    }
}
public class csdn{
    public static void main(String[] args) {
        xiyouji zhubajie,sunwukong; //声明对象
        zhubajie=new xiyouji(); //为对象分配变量
        sunwukong=new xiyouji();
    }
}

       对象的内存模型

        1)用xiyouji声明变量zhubajie时的内存模型如下图

 ​​​​​​​

声明对象变量zhubajie后,zhubajie的内存中还没有任何数据,称这时的zhubajie是一个空对象,空对象不能使用,因为它还没有得到任何“实体”。必须再为对象分配变量,即为对象分配实体。

        zhubajie=new xiyouji();

​​​​​​​        2)为对象分配变量后的内存模型

        当系统一见到new运算符时就会立刻干下面两件事情。

(1)为height、weight、head、ear这4个变量分配内存,即Xiyouji类的成员变量被分配内存空间,如果成员变量在声明时没有指定初值,那么对于整型的成员变量,默认初值是0;对于浮点型,默认初值是0.0;对于boolean型,默认初值是false; 对于引用型,默认初值是null。然后执行构造方法中的语句。

(2) new运算符在为变量height、 weight、head、ear分配内存后,将计算出一个称作引用的值(该值包含着代表这些成员变量内存位置及相关的重要信息),即表达式new Xiyouji()是一个值。如果把该引用赋值给zhubajie那么Java系统分配的height、weight、head、ear的内存单元将由zhubajie操作管理,称height、weight、 head、ear是属于对象zhubajie 的实体,即这些变量是属于zhubajie的。所谓创建对象,就是指为对象分配变量,并获得一个引用,以确保这些变量由该对象来操作管理

        对象的使用

        通过使用点运算符“.”来调用对象的成员和方法。格式如下

        

对象.变量例如:zhubajie.heigth
对象.方法例如:zhubajie.speak

​​​​​​​​​​​​​​


总结

以上就是今天要介绍的内容,本文仅介绍了类与对象的定义使用,一些与他们相关的语句还没介绍,预计下篇博客给大家介绍关键字和一些语句,当然建议大家使用idea编译器,因为日后我会介绍这个编译器的一些便捷方法。最后给我点个赞和关注吧,这对我真的很重要

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值