死磕Java之5个what揭开向对象核心

一、What ls an Object?(什么是对象?)

别人问你什么是对象,你怎么回答?(闭上眼想象一下,当你问一个外行人:什么是对象。然后他或者她说:对象是我的男/女朋友,哈哈)

对象是具有相关状态和行为的。用相应的手段描述日常生活中的现实世界。

有一个很耳熟或者很眼熟的五个字:万物皆对象

那么万物皆对象的来历什么?我谈谈我的看法吧。

万物皆对象之前,咱们先看一看万物复苏这个成语:

万物复苏:
意思:指世间万物都恢复了往日的生机。
扩展资料
【词语】:万物复苏
【读音】:wàn wù fù sū
【解释】:万物,宇宙间的一切事物。复苏,苏醒;恢复生机。指世间万物都恢复了往日的生机。
【造句】:
①这是万物复苏的时节。
②随着春天的到来,万物复苏了。
③春回大地,万物复苏,所有生命都焕发出青春。
④这一时间更为合理,因为春天是万物复苏、万象更新的时节。
⑤春天了,万物复苏,心里的躁动也隐隐作痛起来。
⑥春天是一个美丽的季节,我喜欢春天,因为在春天万物复苏,景色十分美丽。
【出处】:
(1)《易·乾》:“大哉乾元,万物资始。”
(2)日将暮,取儿藁葬。近抚之,气息惙然。喜置榻上,半夜复苏。——清· 蒲松龄《聊斋志异·促织》

回到正题聊聊万物皆对象

可以看到万物就是宇宙间的一切事物

那么万物皆对象,就是:宇宙间得一切事物都是对象喽

你的衣食住行,吃的、喝的、用的,你的四周一切都是物品。

不相信的话,你如果在家环顾四周,你会发现周围的桌子、沙发、电视机、车、宠物、还有爸爸、妈妈等。
如果你站在大街上,会看到:男人和女人,而且头发各异、各种体型、各种头发颜色不同的人。

当然了,这些都可以统称为现实世界中的对象,而且都有共同的两个特征:它/她/他们具有的状态行为
例如:宠物狗的状态(名字、颜色、品种、饥饿程度)和行为(叫、走、摇尾巴、吃等);
如果你能很快的识别现实世界对象的状态和行为,那么面向对象的程序设计思想是很方便理解的。

二、What ls a Class?(什么是类?)

在现实世界中,有很多共同点的个体,例如:各种品牌的自行车,人(男人和女人,不同国家的人)等。

拿人来说,人分为男性和女性,如果你非要说还有第三种性别的人的话,我也不跟你犟嘴了。
都有头发、嘴、鼻子、手、胳膊;
都会吃喝拉撒睡、玩、学习、走路、等等。

那就可以把有什么抽象出来为状态;
会什么抽象出来为动作;

可以编写为一下代码:

public class Person {
    private String name;//姓名
    private double height;//身高
    private double weight;//体重
    private String sex;//性别
    private int age;//年龄
    private String school;//学校

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    //获取个人资料
    public void getPersonInfomation(){
        System.out.println("【"+getName()+"】是【"+getSex()+"】生,今年【"+getAge()+"】岁了,体重【"+getWeight()+"】,身高【"+getHeight()+"】,在【"+getSchool()+"】上学");
    }
}

含有main方法的测试类:

public class PersonTest {
    public static void main(String[] args) {
        Person xiaoming = new Person();
        xiaoming.setName("小明");
        xiaoming.setAge(22);
        xiaoming.setSex("男");
        xiaoming.setHeight(175);
        xiaoming.setWeight(113);
        xiaoming.setSchool("山东建筑大学");

        Person xiaohong = new Person();
        xiaohong.setName("小红");
        xiaohong.setAge(21);
        xiaohong.setSex("女");
        xiaohong.setHeight(169);
        xiaohong.setWeight(95);
        xiaohong.setSchool("山东建筑大学");

        xiaoming.getPersonInfomation();
        xiaohong.getPersonInfomation();

    }
}

运行结果:

【小明】是【男】生,今年【22】岁了,体重【113.0,身高【175.0】,在【山东建筑大学】上学
【小红】是【女】生,今年【21】岁了,体重【95.0,身高【169.0】,在【山东建筑大学】上学

三、What ls Inheritance?(什么是继承?)

不同的种类的对象通常之间有一定的共同点。
像人和动物,都有鼻子、嘴巴,只是个别的不同,动物有毛发,而人是头发。
那么就可以抽取共同点。

共同点:

//共同点
public class PersonAndDogCommon {
    private String name;//姓名
    private double height;//身高
    private double weight;//体重
    private String sex;//性别
    private int age;//年龄

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

人:

public class Person extends PersonAndDogCommon{

    private String school;//学校

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }
}

狗:

//狗
public class Dog extends PersonAndDogCommon{

    private String dogHome;//宠物的家

    public String getDogHome() {
        return dogHome;
    }

    public void setDogHome(String dogHome) {
        this.dogHome = dogHome;
    }
}

四、What ls a Interface?(什么是接口)

接口是与外界交互的接口

例如:电脑的USB接口,手机的耳机孔,充电孔,手机与电脑关机与关机键这些都可以看做为接口。

下面以手机为例:手机的音量(加音量、减音量、开机、关机)

public interface PhoneI {
    public int addTheVolume(int volume);//加音量

    public int reduceTheVolume(int volume);//加音量

    public boolean startPhone(boolean status);//开机关机

}
public class Phone implements PhoneI {
    private int volume;//音量
    private boolean status;//开关机状态

    @Override
    public int addTheVolume(int volume) {
        return (this.volume + this.volume + volume);
    }

    @Override
    public int reduceTheVolume(int volume) {
        return (this.volume = this.volume - volume);
    }

    @Override
    public boolean startPhone(boolean status) {
        return (this.status=!status);
    }
}

五、What ls a Package?(什么是包?)

一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问保护和命名空间管理的功能。

以下是一些 Java 中的包:

  • java.lang-打包基础的类
  • java.io-包含输入输出功能的函数

开发者可以自己把一组类和接口等打包,并定义自己的包。而且在实际开发中这样做是值得提倡的,当你自己完成类的实现之后,将相关的类分组,可以让其他的编程者更容易地确定哪些类、接口、枚举和注释等是相关的。

由于包创建了新的命名空间(namespace),所以不会跟其他包中的任何名字产生命名冲突。使用包这种机制,更容易实现访问控制,并且让定位相关类更加简单。

例如:
在这里插入图片描述

发布了139 篇原创文章 · 获赞 146 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_17623363/article/details/104878559