首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【100天自学JAVA从入门到进阶-第七天】谈谈对象

【100天自学JAVA从入门到进阶-第七天】谈谈对象

作者头像
IT学习日记
发布2022-09-13 15:28:15
发布2022-09-13 15:28:15
26000
代码可运行
举报
文章被收录于专栏:IT知识进阶学习IT知识进阶学习
运行总次数:0
代码可运行

一:什么是对象

定义: 在系统中,对象是用于客观描述一个事物的一个实体,而类这是这类实体的抽象,它是构成系统的一个基本单位。 一个对象由一组描述对象的属性和一组描述对象的动作组成。

  类的实例化可以创建对象,每个对象都有它的生命周期,对象的生命周期可以简单的归为:生成、使用、销毁三个阶段。

  在JAVA语言中,一个类如果不存在引用时,那它就是一个无用的对象,JAVA的垃圾回收器会自动扫描JVM虚拟机,对这些没有被引用的垃圾对象进行回收,开发者也可以显示调用System.gc()方法告知垃圾回收器进行回收垃圾对象。

  但是并不意味着在调用完这个方法后垃圾回收器就会垃圾去回收,具体的回收时间是由垃圾收回器自己确定,调用这个方法只是给垃圾回收器发送一个“信号”,告诉它现在内存不够或者可以去存在垃圾对象需要它回收。

延伸问题一:面向对象有什么特征

  面向对象的三大特征:封装、继承、多态

封装: 隐藏对象的属性和实现细节、只提供访问的公共方法,实现的方式是通过访问修饰符来限定。

继承: 继承表示的是一个类拥有另一个类的相关信息,通过关键字extends实现,被继承的类叫父类(基类、超类),得到继承信息的类也叫子类或派生类,JAVA中类只能单继承,但是可以实现多个接口。

多态: 同一个行为可以有不同的表现形式的能力。具体来说就是一个类型可以有多种表现的形式,如:动物可以是狗、也可以是猫,具体如图所示:

延伸问题二:多态有什么优点

  对类型解耦,可以使用父类或者接口接收子类对象

  可替换性,如实例一个猫对象,可以用动物接收:Animal cat = new Cat()

  可拓展性,多态是对象的多种表现形式的体现,很易于拓展,如动物除了猫狗外,还可以是鸡鸭鱼等

  更灵活,可以随意拓展新的表现形式而不影响其他的形式

延伸问题三:多态存在的必要条件

  1、继承父类或者实现接口

  2、重写

  3、使用父类/接口接收子类对象

``

代码语言:javascript
代码运行次数:0
运行
复制
class Animal2 {
    void draw() {}
}
 
class Dog extends Animal2 {

    @Override
    void draw() {
        System.out.println("汪汪");
    }
}
 
class Cat2 extends Animal2 {
    @Override
    void draw() {
        System.out.println("喵喵");
    }
}
 
class Fish extends Animal2 {
    @Override
    void draw() {
        System.out.println("泡泡");
    }

延伸问题四:JAVA作为面向对象,它有什么特点或者好处

  1、易于理解,有更好的可读性

  2、平台无关性,一次编译,处处运行

  3、提供了许多类库,方便开发者的工作,减少开发时间

  4、提供了对web的支持

  5、具有较好的安全性和健壮性(如垃圾回收)

  6、去除了C++中难以理解,易于混淆的特性

二:多态的实现方式

方式1、 继承父类重写父类方法,关键字extends

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * 图形
 */
class Shape {
    void draw() {}
}
/**
 * 圆
 */
class Circle extends Shape {
    @Override
    void draw() {
        System.out.println("Circle.draw()");
    }
}
/**
 * 正方形
 */
class Square extends Shape {
    @Override
    void draw() {
        System.out.println("Square.draw()");
    }
}
/**
 * 三角形
 */
class Triangle extends Shape {
    @Override
    void draw() {
        System.out.println("Triangle.draw()");
    }
}

方式2、 实现接口,重写接口方法,关键字implements

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * 图形
 */
interface Shape {
     void draw();
}
/**
 * 圆
 */
class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Circle.draw()");
    }
}
/**
 * 正方形
 */
class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("Square.draw()");
    }
}
/**
 * 三角形
 */
class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Triangle.draw()");
    }
}

方式3、 同一个类中方法重载

代码语言:javascript
代码运行次数:0
运行
复制
class Animal3{
    /*
        重载实现多态
     */
    
    public void call(){
        System.out.println("无参数的叫声");
    }
    
    public void call(String mode){
        System.out.println("带参数的叫声");
    }
}

写在最后

  面向对象编程是JAVA语言的核心特点,能否正确理解对象含义对后续的JAVA学习有着至关重要的作用,本文通过通俗的例子介绍了对象的含义和一些特点,希望能够帮助到自学JAVA的小伙伴,下一篇文章再见啦。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/05/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:什么是对象
    • 延伸问题一:面向对象有什么特征
    • 延伸问题二:多态有什么优点
    • 延伸问题三:多态存在的必要条件
    • 延伸问题四:JAVA作为面向对象,它有什么特点或者好处
  • 二:多态的实现方式
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档