Java面向对象解析

概念

面向对象(Object Oriented,简称OO),是一种程序设计思想,是 Java 语言的核心部分。利用面向对象的思想,我们在设计程序的时候,将数据抽象化为对象,并以对象为单位进行程序设计。

类和对象

是一类拥有共同属性、共同方法(函数、行为)的数据的统称。比如猫就是一个类,猫并不指某个具体的猫,而是所有的猫的统称。它们都有 2 只眼睛、2 只耳朵、4条腿(属性)...它们都可以发出“喵喵喵”的叫声、可以钻进与自己体型不符合的小洞、可以跳跃(行为、方法)...

对象

对象是某个类的一个具体的例子。比如我家里养了一只小猫,叫做小花,它拥有猫这个所有的属性和行为,但它是一个具体的例子,因此,小花是一个对象。

类的成员

类的成员可以简单分为成员变量成员函数,成员变量即前面讲到的属性(Attribute),成员函数即前面讲到的方法(Method)。

类的实例化对象

类的实例化对象是指某个类的一个实际例子,比如前面提到的小花就是猫这个类的一个实例化对象。

Java相关语法

注:以下语法中,[]和<>中的内容是编码时需要编码者自己编写的内容(不包括括号本身),其中[]中的内容为可选项,<>中的内容为必填项。...代表省略部分。

// 以下为语法
[修饰符] class <类名>{
  ...
}
// 以下为示例
public class Cat{
  ...
}
class Dog{
  ...
}

类的成员变量

class Demo{
  // 以下为语法
  [修饰符] <数据类型> <变量名>;
  // 以下为示例
  private int a;
  private double d;
  float f;
  ...
}

类的成员函数

class Demo{
  // 以下为语法
  [修饰符] <返回值数据类型> <函数名> ([<数据类型> <参数1>],[<数据类型> <参数2>]...){
    ...
  }
  // 以下为示例
  private int getNum(){
    ...
  }
  public void setName(String name){
    ...
  }
  void addNum(int a,int b){
    ...
  }
}

创建类的实例化对象

class Demo{
  public staic void main(String[] args){
    // 以下为语法
    [<类名> <对象名> = ] new <类名>([<数据类型> <参数1>],[<数据类型> <参数2>]...);
    // 以下为示例
    Cat xiaohua = new Cat();
    new Dog("xiaohei");
  }
}

实例化对象调用类的成员

注:实例化调用类的一个成员的前提是该成员是非私有成员,成员的访问权限由修饰符决定,不在本文的讨论范围中,请自行查阅相关资料。

实例化对象调用类的成员变量

class Demo{
    public static void main(String[] args){
      // 以下为语法
      <对象>.<变量名>;
      // 以下为示例
      cat.eyes;
      cat.ears;
    }
}

实例化对象调用类的成员函数

class Demo{
    public static void main(String[] args){
      // 以下为语法
      [<返回值类型> <变量名> = ] <对象>.<函数名>([参数1],[参数2]...);
      // 以下为示例
      cat.jump();
      cat.eat(new Fish());
      Knowledge kl = person.study();
    }
}

面向对象应用示例

利用面向对象思想进行 学生网上选课 程序设计

前言
假设我们现在要设计一个学生网上选课的程序,我们已有的数据有:3000名学生的信息,包括学生的学号、姓名、性别、年龄...100门可选课程,包括课程的编号、名称、类别...我们的目标是设计出一个程序,使得学生可以使用该程序进行选课、退课。
设计步骤

  1. 将数据抽象化为对象。此例中我们可以将数据抽象化为两类对象:学生(Student)和课程(Course)。
  2. 确定每类对象中的成员。
    对于课程对象,我们有成员变量:编号(id)、名称(name)、类别(category)...
    对于学生对象,我们有成员变量:学号(id)、姓名(name)、性别(sex)、年龄(age)...有成员函数:选课(selectCourse)、退课(dropCourse)。
  3. 创建每种对象的类:

课程类

class Course{
  int id;
  String name;
  String category;
}

学生类

class Student{
  ind id;
  String name;
  String sex;
  int age;
  boolean selectCourse(Course course){
    ...
  }
  boolean dropCourse(Course course){
    ...
  }
}
  1. 通过完成学生类的选课(selectCourse)、退课(dropCourse)成员函数,即可完成设计目标。

总结

利用面向对象的思想来设计程序,往往可以让设计者在设计过程中思路清晰、化繁为简。并且,使得原本松散、无序的数据得到了统一、有序的结构,便于设计者对数据的管理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容