初识Java(类与对象)

C语言

C的格式

在这边依然得扯扯我们曾经的C语言,以下为C语言的主函数与子函数:

#include <stdio.h>    //导入C语言的输入输出函数库
int main()            //主函数
{                     //函数体开始(一个作用域)
    语句;             //程序语句
}                     //函数体结束

void max()            //子函数
{
    语句;
}

一个C源文件中可以包含1个主函数与无数个子函数。
首先以上的代码很好理解,第一句是导入一些必要的函数库。然后第二行开始使用的是 main()方法,我们都知道 main()方法是函数执行的入口,作用范围是函数体 {},最后一个函数体结束的大括弧就是函数的出口,退出结束的意思。任何程序的执行都是从主函数开始,主函数结束

main()方法 一切程序运行时候使用的主要方法,程序的运行从主方法进,主方法出。

Java中的方法

相信大家在看上述内容的时候发现,明明说好了不是函数吗?主函数、子函数,怎么说着说着就变成 main()方法了?
没错!如果你有所察觉,那么就代表你已经知道了,Java中的方法相当C语言的函数,Java语言提供了大家非常多的方法实现各种各样的功能,我们知道C语言以及C++语言主要研究的是算法,学过C的同学都知道有些算法可能过于复杂,不过在Java中各位就不必考虑这些问题了,因为当你需要使用到某一方法的时候,调用该方法来完成(实现)就可以了。

算法与方法

什么是算法?
我个人简单的理解就是具有实现某一功能或者说实现某一方法的作用。
什么是方法?
具有实现各种功能的方法,方法中包含算法,而我们实际面向对象程序设计中只需要调用对应方法来完成某一项功能即可,也有可能调用各种方法来共同实现。
所以说从C语言转到Java,我们非常快的理解了Java的方法。


-
什么是类?
一般人,一般书都会先解释什么是类,但我并不认为需要先给你解释。

方法-->类

由于我们先知道了方法,所以现在要做的就是方法转类。假如现有如下9个方法:

吃、减、喝、求余、玩、乐、加、乘、除

看到以上9个方法,请问各位第一印象如何?是不是觉得很乱?
如果你有这种感觉,就说明了你已经了解了什么东西。故此,我们现状要对这九个方法进行归类,归类后的结果如下:

吃喝玩乐 归为一类
加减乘除求余 归为一类

这样看上去会不会比之前的好看一点了?如果你有这种感觉,你就会发现,当方法一多起来的时候,你就会觉得很乱,你就会需要迫切给这些方法进行归类。


class

归类之前,先把这些假设的例子,写成真正的方法形式吧,再进行归类操作。反正不差那几笔!方法名字我就用对应的英文名来取

public class Life{
    eat(){
    ……
    }
    drink(){
    ……
    }
    play(){
    ……
    }
    happy(){
    ……
    }
}

public class Math{
    addition(){
    ……
    }
    subtraction(){
    ……
    }
    multiplication(){
    ……
    }
    division(){
    ……
    }
    remainder(){
    ……
    }
}

好了,我已经将他们分类好了,你是不是会觉得很奇怪?为什么又多出来了那么多东西呢?
实际上可以用最简单的视图来看待上述的分类,实际上是分类就是在方法的外边加上一个类,就如下面所示:

class {

}

方法就放在上面的class的作用域里面,作用域就是指 {} 之间的区域
那么之前的分类好的代码又是怎么回事呢?为什么多出来那么多东西?实际上格式如下:

修饰符 class 类名 {

}

于是你又得问什么是修饰符?
答:我只能先告诉你,上述的修饰符 public 的意思是“公共的”,有公共的,自然就有私有的,甚至还有其他更多种类的。
首先在C语言里面,我们在主函数中调用一个子函数,比如开头部分的,我在 int main() 方法里的某一处地方要求最大值,而刚好有一个子函数是来处理最大值的,它就是max(),那我只需要在 int main() 方法中写出 max() 自然就调用了该函数。
那么同样的道理,java里面必须要给方法分类,没有类他是错误的!,所以说任何的方法都要进行归类,没有找到自己的家怎么行?那么有了家就有了什么?大家好好想想,是不是“门”和“窗”?如果你想到了就代表你已经入门了,算一个合格的Java新星。
有门和窗的话,那要怎么进行调用?方法如下(在A类中调用B类中的方法)

public class A{
    B volu;   //volu是变量,B是数据类型
    volu = new B();    //给变量volu赋值
}
public class B{
    eat(){
    ……
    }
}

你会觉得很奇怪为什么将B类的类名拿来做数据类型,其实它叫做对象。然后给这个叫做“B对象”的变量volu赋值,WTF?奇怪,new B();是什么意思?正如你所看到的字面意思!
new 就是新建一个的意思,B()是不是有点像方法的感觉?其实没错,他就是一个方法,只不过是个特殊的方法,而这个方法的作用就是开辟一个属于“B类”的栈内存。假如A类里面有主方法,那么我们知道程序是从主方法开始,主方法结束。不会去执行其他的类或者方法,而且一个源文件里面只有一个是主方法,其他的方法将不被执行,所以,我们需要在主方法中调用其他类的方法,就需要先给其他的类开辟一个内存空间,让那个类活起来!
于是现在终于可以调用了,但是具体的调用形式分具体的情况而定,如果eat()方法只是输出一句话,A类包含主方法,则可以之家以如下格式调用:

public class A{
    public static void main(String[] args){
        B volu;
        volu = new B();
        volu.eat();    //B类的eat()方法
    }
}
public class B{
    eat(){
        System.out.println("你好!");
    }
}

结果就是在控制台上显示“你好”。而上述格式中,A里面的public static void main(String[] args){} 便是Java中的主方法的表示方法,程序的起始入口,程序从这进从这结束。在主方法中调用其他类的方法就如上所示。他们在同一个 .java源文件中!


  • 本篇文章由“IT蘑菇”原创编辑,未经作者允许,谢绝转载!