Java中面向对象的编程概念

  面向对象的编程概念 -java学习之路

一、对象

  在面向对象的编程设计中,对象当然是最基本的概念。不知道何为对象,怎么面向对象呢。
  对象一词最早来源于哲学,讲到“一切皆对象”,在这里不讨论哲学的问题了。在生活中,我们可以看到很多对象的例子,如狗,猫,桌子,人等。
  生活中的对象都有两个共同的属性:状态和行为。人有名字,有体重,有身高等状态,人要吃饭,要学习等行为。根据面向对象编程的思路来确定生活中的对象的状态和行为,把一个具体的物体抽象出来,用程序语言对它进行操作等。
  在概念上,软件中的对象与生活中的对象类似,都有状态和行为两种属性。在程序语言中,用变量(variable,有些程序语言叫字段field)存储状态,用函数(function,有些程序叫方法method)来定义行为。
  对象之间进行通信是通过方法对对象内部状态的操作。这种通信方法隐藏了对象内部的状态,在面向对象的基本原则中要求所有通信都通过对象的方法来实现,这种原则通常称为数据封装。
  外界如何使用对象,取决与对象的状态和改变状态的方法。将代码构建成独立的软件对象,具有很多的优点:
  1.模块化。每个对象都是独立存在的,它的编写和维护都独立与其它的对象。独立的对象能够很容易的在系统内传送。
  2.信息隐藏。用户只能够与对象的方法交互,对象的内部实现细节被隐藏,用户不知道对象实现的细节,也不会轻易的修改对象,这样能使程序更加安全。
  3.代码重用。当对象已经创建,就可以直接使用该对象。这样写程序时就能调用前辈们已经写好的有复杂的特殊功能的对象,这样就可以避免不断的重写代码,还是实现的相同的功能。
  4.易于调试。当有些对象出问题时,我们不需要修改怎个程序,可以直接移除那个对象并用其他对象替代。

二、类

  在生活中有许多对象,他们属于同一类型,有着类似的状态和行为,这样我们就可以把他们归为一个类。在面向对象的术语中称为类,所有的个体对象是类的实例,类是对象的抽象。
如在下面的代码中Person类实现了人的一种方法:

class Person {
    // 状态
    String name;// 人的姓名
    String sex;// 人的性别
    int age;// 人的年龄

    // 行为
    public void setName(String name) {// 设置人的姓名
        this.name = name;
    }

    public void setAge(int age) {// 设置人的年龄
        this.age = age;
    }

    public void setSex(String sex) { // 设置人的性别
        this.sex = sex;
    }

    public void displayPersonMessage(){ //输出人的信息
        System.out.println("姓名:" + name + "年龄:" +  age + "性别" +  sex);
    }
}

  该类的设计是对人这个对象的讨论,name, age和sex等字段表示对象的状态,setName, setAge, setSex和displayPersonMessage等方法定义了对象与外界的交互方式。上面的代码中没有main方法。类并不是一个完整的应用程序,只是人这个对象的蓝图。
下面的PersonDemo类中实例化两个Person对象并调用他们的方法:

public class PersonDemo {
    public static void main(String[] args) {
        Person personOne = new Person();// 实例化对象
        Person personTwo = new Person();
        // 通过实例化的对象调用该对象的方法

        personOne.setName("第一个人");//设置姓名
        personTwo.setName("第二个人");

        personOne.setAge(20);//设置年龄
        personTwo.setAge(30);

        personOne.setSex("男");//设置性别
        personTwo.setSex("女");

        personOne.displayPersonMessage();//输出信息
        personTwo.displayPersonMessage();
    }
}
执行完毕后会输入两个人的姓名,年龄和性别如下:
姓名:第一个人  年龄:20  性别:男
姓名:第二个人  年龄:30  性别:女

3、继承

  一般来说,不同的对象也有相同的地方,比如学生和老师都是人,都有名字,年龄和性别等属性。但他们也有不同的地方,他们的职业不同,如学生有学号,教师有职称等。
在面向对象程序编程中,类可以继承其他类的状态与行为。上面的Person类就是Student类,Teacher类的超类(superclass),在java语言中,一个类只能有一个直接超类,每个超类有潜在的无数个子类(subclass)。
创建子类的语法如下,类声明时按顺序添加extends和要继承的类名:

class Student extends Person {
        //新的字段和方法定义
    }

  这样定义后,Student类拥有与Person相同的字段和方法。写Student类时只需要关注那些不同的属性。这种定义方式会增强代码的可读性。要注意的是,文档化子类定义状态和行为要小心,因为子类的源文件不会包括超类的代码。

4、接口
  如前面说到,对象通过方法与外界交互,也就是说方法是对象与外界的接口,比如电脑上的电源按钮,就是人与电脑内部电路的接口,人可以通过电源控制电脑。
  绝大多数情况下,接口被定义成为一组方法体为空的相关方法的集合,如果将人定义成接口,其形式如下:

interface Person {
    public void setName(String name);// 设置人的姓名

    public void setAge(int age);// 设置人的年龄

    public void setSex(String sex); // 设置人的性别

    public void displayPersonMessage();//输出人的信息
    }

  实现接口时,在类声明中使用关键字implements,形式如下:

class Student implements Person {
    //类的其他部分
    //接口方法的实现
}   

 通过实现接口,类可以更形式化地定义行为。接口构成了类与外界的契约,而且该契约在构建程序时由编译器强制执行。如果类声明实现了一个接口,那么接口中的所有方法都必须出现在该类中,否则编译不通过。

5、包
  是相关类与接口的命名空间。概念上包和文件夹类似,可以将不同的.java文件放在不同的包中,按照包的逻辑形式组织相关类和接口有很大的意义。
  java平台提供了强大的类库(包的集合)用于应用程序开发。该类库通常称为应用程序接口(Application programming Interface, API)。类库中的包包含了编程中的常见任务。
  java平台应用程序接口规范(Java Platform API Specification)给出了Java SE平台提供的所有包、接口、类、字段、方法的完整列表。我们在写Java程序时可供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值