Java面向对象1--类和对象

面向过程的程序设计:

面向过程,一种较早的编程思想,在过程的角度思考问题,强调的就是功能行为,功能的执行过程,即先干什么,后做什么。每一个功能都使用函数实现.

面向对象的程序设计(OOP):

面向对象程序设计,顾名思义,该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是具备某些功能的对象。
面向对象程序设计是当今主流的程序设计规范,更加适合使用于解决规模较大的问题,但是千万不要误解为面向对象一定就优于面向过程的设计.

面向对象三大特征:

  • 封装(Encapsulation):将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能

  • 继承(Inheritance):当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员。

  • 多态(Polymorphism):可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征。


抽象:

抽象是指从特定的角度出发,从已经存在的一些事物中抽取我们所关注的特性、行为,从而形成一个新的事物的思维过程,是一种从复杂到简洁的思维方式。

类(class):

类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。
具有相同特性(状态)和行为(功能)的对象的抽象就是类

举例来说,“人”这个类会包含人的一切基础特征,即所有“人”都共有的特征或行为,例如有眼睛,有鼻子,会吃饭。

/*
 定义类:
1:类名使用 名词  或者  名词短语,
类名首字母 大写,
如果有多个单词组成使用 驼峰表示法
2:如果类使用了public修饰,则当前类所在的文件名称也必须为该类名.
 */
 public class User {
    private String name;
    private int age;

    public void eat() {
        System.out.println("");
    }

    public User(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
}

对象(Object):

对象(Object)是类的实例。

例如,“狗”这个类列举狗的特点,从而使这个类定义了世界上所有的狗。而莱丝这个对象则是一条具体的狗,它的属性也是具体的。狗有皮毛颜色,而莱丝的皮毛颜色是棕白色的。因此,莱丝就是狗这个类的一个实例。一个具体对象属性的值被称作它的“状态”。(系统给对象分配内存空间,而不会给类分配内存空间。这很好理解,类是抽象的系统不可能给抽象的东西分配空间,而对象则是具体的。)

总结:对象是类的实例,类是对象的抽象。

对象的基本操作

  • 对象的创建和使用
//使用new关键字创建对象
User usr1 = new User("A",20);//new关键字的作用:1).在堆内存开辟空间,2).创建对象
  • 对象的比较
    每次new出来的对象,都表示独立使用一块堆内存空间.
    所以比较对象不能使用"=="号,因为等号比较的是内存的地址,即是不是同一块内存区域. 此时我们可以使用Object类中的equals方法(自定义类需要覆盖equals方法)来比较是否是同一个对象.

eclipse工具能自动生成自定义类的equals方法,鼠标右键(或者快捷键A/t+Shift+s)


eclipse工具自动生成equals方法.png
@Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        User other = (User) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }
//对象的比较
        System.out.println(user1 == user2);//false == :对于引用类型比较的是地址
        System.out.println(user1.equals(user2));//true:
  • 打印对象
    打印对象的时候,默认打印出的是对象的hashCode值
    但是,我们更关心的是对象中的状态,比如name是什么,age是什么.如果想在打印对象的时候,看到对象的状态信息,可以在当前类中覆盖Object类中的toString方法

eclipse工具自动生成toString方法,快捷键A/t+Shift+s,选择''toString"

    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
//对象的打印,未覆盖toString之前
System.out.println(user1);//User@66e
//覆盖toString之后
System.out.println(user1);//User [name=A, age=20]
        
  • 对象的生命周期
    从new开始到该对象不被任何么变量引用的时候结束,一旦一个对象不被任何变量所引用时,该对象就是垃圾,就等着Java的垃圾回收器(GC)来清理。
    注意:并不是垃圾一旦产生GC就会清理,这完全取决于JVM的调度,程序员无法控制。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,050评论 0 62
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,158评论 11 349
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,563评论 18 139
  • 《故事思维》听书笔记: 本书作者认为 讲故事 是无论在工作中还是生活中,影响或说服别人的最佳方式,往往胜过讲道理,...
    千年白果树阅读 172评论 0 0