给Java初学者的学习笔记

第6章 面向对象基础概念

2019-03-29  本文已影响320人  yangsg

1. 面向对象的基础知识

1.1 什么是面向对象

面向对象是一种软件开发方法,主要的开发方法

面向对象着重于将现实世界或想象世界中的事物,通过编程手段映射到计算机世界中,这个被称为“抽象”
抽象的过程就是面向对象设计和构建的一个过程,以人类归纳总结能力,将同事物进行共性归类。归类的过程相当于将现实世界中某个事物,制作成代码中的“类”,类可以理解为就是自定义的类型。

1.2 抽象
1.2.1 排除非共性

比如:描述鸟类的共性
(1)翅膀 ?? NG
(2)飞 NG
(3)羽毛 OK
(4)喙 OK
(5)叫声 OK
(6)两只脚 OK
(7)会下蛋 OK
(8)筑巢 ?? NG
...
抽取某个类的共性,需要注意的第一点,排除“非共性”后
(1) 羽毛
(2) 喙
(3) 叫
(4) 脚
(5) 下蛋
共性分为两类:"名词"和“动词”
“名词”: 羽毛,喙,脚
"动词":叫,下蛋
当我们准备抽象“鸟类”,类中分为"属性"和“行为”

1.2.2 排除不相关

对于一些共性,在某些系统中是不必要的。比如描述学生类,类似视力,体重等属性,吃饭,睡觉等行为是与学生身份相关性较低的,所以会排除掉。而类似学号,姓名等属性,学习和考试等行为是与学生身份相关性很强的,所以予以保留。

学生类
姓名
学号
视力
体重
吃饭
睡觉
学习
考试

如果考虑的是患者类,类似视力,体重等属性,吃饭,睡觉等行为可能与患者身份相关性较强,会予以保留,而类似学号等属性,考试等行为相关性不大,需要排除。

患者类
姓名
学号
视力
体重
吃饭
睡觉
学习
考试

在1.2.1中抽象的鸟类的共性,排除一些系统中认为不相关的属性和行为,可能剩下的就是
(1) 羽毛(颜色)
(2) 叫
(3) 下蛋

1.2.3 抽象和实现的过程
抽象和实现的过程
public class Person {
    
    String name; //人的名字
    char sex; //人的性别
    int age; //人的年龄
    
    public void eat() {
        System.out.println(name+"正在吃饭");
    }
    
    public void sleep() {
        System.out.println(name+"正在睡觉");
    }
}
public class Test {

    public static void main(String[] args) {
        //p1和p2被称为“对象”
        Person p1 = new Person();
        p1.name = "高扬";
        p1.sex = '男';
        p1.age = 22;    
        p1.eat();
        
        Person p2 = new Person();
        p2.name = "刘钢";
        p2.sex = '男';
        p2.age = 22;
        p2.sleep();
    }
}

类和对象的关系:类是对象的模板,对象是类的具象化(实例化)。

上一篇 下一篇

猜你喜欢

热点阅读