三.java基础学习:面向对象(OOP)

OOP面向对象的理解

OOP:Object-Oriented Programming 即 面向对象编程。

在java的世界里,一切皆对象,所谓面向对象,则是:把现实世界的事物,把它的特征抽象的描述在一个模板中,通过这个模板创建出一个程序实例,这个程序的实例,我们称之为对象,而这个实例拥有事物在现实世界的特征描述,比如属性,行为;
 
例如可以把人类的特征抽象到模板中,再使用这个模板创建出一个拥有人类特征的程序实例,首先描述一下人类都拥有哪些属性特征:姓名、性别、年龄、身高、体重…;再来分析一下人类有哪些行为特征:呼吸、吃饭、喝水、上厕所、睡觉…。
 
我们把以上“人类”的特征,通过代码的方式描述到模板中,由该模板创建出来的程序实例就拥有了人类的特征和行为;把人类的特征描述到模板的这一过程和行为,我们在程序中称之为“封装”,这是面向对象非常重要的三大特性之一,通俗的描述一下:把属性、行为描述到模板,我们称之为 封装(也可以说 把属性、行为封装到模板中)。
 
OOP面向对象三大特性的第二个特性是 继承,我来通俗的描述一下,你继承了赛亚人的力量,这个时候你就拥有了赛亚人的力量,我们来分析一下 你 + 赛亚人力量,首先你是人类,人类的模板已经创建好了,那么接下来我们分析一下赛亚人力量都有哪些属性和行为:
-属性:颜色、数值、形状
-行为:数值大小变换、颜色变换、形状变换
分析完之后,我们创建出一个“赛亚人力量”模板,把赛亚人力量拥有的属性和行为封装到模板中;之后我们只需在“人类”的模板中,继承 “赛亚人力量”的模板,那么这个“人类”就拥有了“赛亚人力量”,我们通过这个拥有“赛亚人力量”的“人类”模板而创建出来的实例,我们可以叫他 赛亚人,因为这个人类模板已经拥有了“赛亚人力量”。(如果我们再创建出一个拥有狗的属性和行为的模板,再让这个模板继承赛亚人力量,那么通过这个狗的模板创建出来的狗实例,我们也可以称之为赛亚狗,因为他不是一只单纯的狗,而是一只拥有了赛亚人力量的狗):
-------- 继承里面有一些需要简单记一下的概念:“人类”继承“赛亚人力量”,继承人被称之为子,被继承人称之为父,就是父子关系;可以理解为“人类”模板称之为 子模板,“赛亚人力量”模板称之为父模板。这是对于继承关系的一种描述。---------
 
OOP面向对象三大特性的最后一个特性 多态,通俗的讲就是,模板的多种形态的一种描述,主要用于描述继承的,我们就用上面的例子来讲,首先我们把拥有“赛亚人力量”的都称为“赛亚族”,上面的“赛亚人”和“赛亚狗”,我们都可以把他们称之为“赛亚族”,多态就是这么简单;就是父类可以包含子类的描述,比如一个继承了赛亚力量的人类,你称呼他赛亚族,也是可以的,此时的这个赛亚族称呼的人类,就是拥有了人类属性行为+赛亚力量属性行为的实例。
 
当然,更具体的理解,我们通过下面的java来进一步进行理解。


Java中的面向编程

在java中,我们的.class文件就是我们上文所说的 模板,我们会把事物的属性和行为定义到.class文件中,在不同的.class文件中,只要把其他模板引入到当前模板,然后我们就可以自由的调用其他模板中所允许调用的行为或属性了。class我们称之为类,因为在编程的时候,我们需要创建很多的模板,由于模板很多我们维护和管理起来会很乱,所以我们会根据不同的分类,把他们放在不同的文件夹中,而java里把这些文件夹称为 包,其实这个非常容易理解,图书馆有很多的书,为了方便查找和管理书本,我们会把书本进行分类,然后放到不同的书架上,就这么简单。在java类中,有一种叫 作用域 的东西,这个东西挺有意思的,理解起来也非常容易,就是标识一下类中的属性和行为,表明这个类中的属性和行为,哪些是我自己私人专用的,哪些是别人也可以使用,哪些是子类和自己才能用的(继承了自己的类,称为子类),哪些是和自己在同一个包下的才能用;就是这么简单,一共四个作用域:

  • private私有:在属性或行为前面加上这个单词private ,就声明了这个属性是私有的,表示这个属性只能用在该属性所在的class文件中。(比如 人类有一个“消化”的功能/行为,这个行为只属于自己,定义为private,其它的模板引入人类模板之后,是不能调用这个行为的)
  • public公共:顾名思义,就是谁都能调用的方法,比如“获取姓名”的行为,标识为public公共,小红想知道你叫什么名字,小红的模板中引入你的模板,然后就能调用“获取姓名”行为获取你的名字了。
  • protected受保护:标识了protected的属性或行为,只有自己和继承了自己的类才能调用。
  • default 默认:就是什么标识都不用加,默认只有自己和同包下的class才能调用。

我们用IDE创建一个java的class文件,然后给他定义上一些属性和行为,我们就定义一个“人类”的class吧(Person ):

public class Person {
    // 名称(private 标识只有当前class能使用)
    private String name;

    // 年龄(private 标识只有当前class能使用)
    private int age;

    // 性别(private 标识只有当前class能使用)
    private char gender;

    // 行为:为名称属性设置值
    public void setName(String name) {
        this.name = name;
    }

    // 行为:获取名称的值
    public String getName() {
        return this.name;
    }
}

public class Person{}:定义了一个公共类,类名叫Person。

这个Person类中(花括号内)定义了三个私有的属性:name、age、gender。

这个Person类中(花括号内)定义了两个公共的行为:setName()、getName()。

注:“行为”以上所说的setName和getName两个行为,在java中称作 方法。
public void setName(String name):定义一个public公用 void没有返回值 方法名叫setName 参数是String字符串类型 参数名为name 的方法。
public String getName():定义一个public公用 String字符串类型返回值 方法名叫getName的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值