Java之面向对象

(ps:这是我的第一篇关于JavaSE的文章,基础语法如基本数据类型、String、数组、循环分支等语法就部赘述了,直接从Java的面向对象开始!)

面向对象和面向过程

  • 1.面向过程关注于功能和行为
    面向对象关注于功能和行为所属的对象。
  • 2.Java 语言,作为面向对象的语言,更多的关注于类的设计!
  • 3.面向对象两大元素:类和对象
    三大特性:封装、继承、多态、(抽象)

    上面三点可能初学者并不难很好的理解,但这并不重要,先有个大概了解,后面我们一步步地进入正轨。

具体了解面向对象

在接触面向对象编程时我们不可避免会碰到这么几个名词如:对象构造方法(构造器)成员方法(行为)成员变量(属性)等。
那么接下来我就来一个一个以最通俗的话介绍它们。


  • 首先下个定义:类就是一类事物针对某几个相同特征的抽象
    举个例子:阿猫、阿狗、金鱼、飞鸟的共同特征就是动物,那么此时类的概念就出来了,即阿猫、阿狗、金鱼、飞鸟他们都是动物类的。
    再举个例子:还是阿猫、阿狗、金鱼、飞鸟,他们之中阿猫、阿狗又具有陆生的共同特征,因此他们又可以归为陆生动物一类。
    此时,大家应该就懂了,类就是对一类事物按照不同的理解角度的一个抽象

  • 对象
    如果大家已经把前面所说的类理解了的话,那么恭喜你,对象的概念你立马就会明白。所谓对象就是某一类的具体实例。
    这么说有点矫情,还是那刚才的例子来说,阿猫、阿狗、金鱼、飞鸟是属于动物这个类的,那么具体到某一个时,阿猫就是一个动物类型的对象,阿狗也是动物类型的对象,金鱼、飞鸟同样也是动物类型的对象。
    所以,简单的来说,对象就是一个类的具体实例。因此,我们常常也把对象称作类的一个实例。而在编程时构造一个类的对象的过程我们也常常称作对象的实例化

  • 成员变量(属性)
    接下来说下属性,也叫成员变量,都一样的意思。简单的说属性就是类所拥有的静态特征,比如说人的名字、身高、年龄、家庭住址,动物的科属、寿命、生活地区这些都是属性。这个东西应该是很好理解的,不在多说。

  • 成员方法(行为)
    接下来说下行为,又称为成员方法。行为这个词相信大家都了解,就是动作的意思。在Java程序里所有的方法(就是函数)都是行为,因为它可以完成一些操作
    举个例子:现在有‘人’这么一个类,它应该包含着人类所公有的特征,比如吃饭、睡觉、说话,而这些都是人的行为动作,因此吃饭、睡觉、说话这写就是行为,即成员方法。
    说到这里时我们应该能举出一个较为生动形象的例子了:小红、小明、大兵他们都属于人类,而具体到他们三者时,他们是人类的具体实例,也就是三个人类对象。他们都应该有名字、年龄、身高等这一类的属性,也具有吃饭、睡觉、说话等共同行为。

  • 理解构造器的前续工作
    在我们理解了类、对象、行为、属性这几个概念后,我们还要了解一个概念就是构造器(也被称作构造方法、构造函数)。
    先看一段代码:

    public class Student{
            public String name;//学生姓名
            public String age;//学生年龄
            public void eat(){
                System.out.println("学生也要吃饭!");
            }
            public void sleep(){
                System.out.println("学生也要睡觉!");
            }
    }

这段代码相信大家都能看的明白,就是定义了一个Student学生类,类中包含了学生的姓名、年龄两个属性,还包含了吃饭、睡觉两个行为。
现在问题来了,如何创建一个学生类型的具体实例呢?比如,我要创建一个学生实例叫小明,姓名当然是小明,年龄10岁。那我该如何告诉用程序来表达呢?废话不多说,先上代码:

public class Test{

  public static void main(String [] args){
        Student xiaoMing = new Student();//创建一个学生实例小明
        xiaoMing.name = "小明";//设置小明的姓名
        xiaoMing.age = 10 ;//设置小明的年龄
  }
}

正如代码所示,我们通过这样的方式 Student xiaoMing = new Student();的方式创建了一个学生类型的实例,我们为这个学生类型的变量命名为xiaoMing,但这个知识变量名哦,真正要为xiaoMing这个学生类型的对象命名的是后面一行代码:xiaoMing.name = “小明”;设置年龄同理。就这么几行代码其实有很大的说道,不过我们现在写这几行代码是为了引出“构造器”这个概念,其余的道道儿我们以后再说。

仔细观察我们发现,在创建学生对象xiaoMing时我们用了一个new关键字,后面紧跟着的是Student(); 类名和括号这个东西,那这是什么呢?我们在仔细一联想可能就会想到成员方法这四个字儿,为什么呢?我们在定义成员方法时不就是这样一个标识符加参数列表的形式嘛!只不过此时它的参数列表为空!
好的,现在我就可以为这个东西下一个定义了,这个new关键字后面的Student()正是学生Student这个类的构造器。为什么叫构造器呢?其实也很好理解,Student xiaoMing = new Student();这句话不正是要创建一个xiaoMing对象嘛!而这个创建对象就是构造对象的意思,而构造这样的对象需要通过一个这样的类似与成员方法的东西,因此我们将它称作“构造方法”,简称构造器。

  • 构造方法(构造器)
    在引出了构造器的概念后,接下来我们具体说说构造器的特点。我学东西的一个方法就是,先记忆,后理解,先遵守规则,后理解规则。我认为这是一个不错的学习方法,它能让我少钻牛角尖,快速掌握一门技能。我把此方法推荐给大家。好,继续。
    先记几点:
    1.构造方法也是方法
    2.构造方法的名字与这个方法所属类名相同
    3.构造方法的调用需配合new关键字
    4.无参数的构造方法不需要我们显示声明在类中,但学习了方法重载以后就不是这样了,先心理有个数。初学不想记太多区别时,可以统统在类中把无参构造器写上。
    声明无参构造器代码如下:
public class Student{
            //下面是成员变量
            public String name;//学生姓名
            public String age;//学生年龄
            //下面是无参构造方法
            public Student(){

            }
            //下面是普通成员方法
            public void eat(){
                System.out.println("学生也要吃饭!");
            }
            public void sleep(){
                System.out.println("学生也要睡觉!");
            }
    }

可见,写一个无参构造器还是很容易的,权限修饰符在没具体讲前先都写public,构造方法没有返回值的概念,所以不要写什么void的之类的返回类型,方法名就是类名,参数列表为空,方法体内可以写你想写的代码段,也可以不写。
注意:构造器存在的意义是用于创建一个类的实例(对象),因此构造器的方法体内的代码段将在对象被创建时就执行
举个例子:

public class Student{
            //下面是成员变量
            public String name;//学生姓名
            public String age;//学生年龄
            //下面是无参构造方法
            public Student(){
                System.out.println("学生对象被创建了!");
            }
}
public class Test{
    public static void main(String [] args){
        Student xiaoMing = new Student();//这句话一执行就会打印构造方法Studet()的方法体中的代码,即打印“学生对象被创建了”这句话!
    }
}

顺便提一句,构造器的方法体中所放的代码,在实际开发中常常是用来初始化一些其他数据的。

总结一下

在这篇博文里我们介绍了面向对象的几个基本关键词,理解类和对象的方法基本就是理解阿猫阿狗和动物之间的关系,然后介绍了类的几个基本角色:构造器(构造方法)、成员变量(属性)、成员方法(行为),可能你现在还是比较懵,但先把现在所讲的几个概念理解(记住)了我们后面一步一步的深入理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值