持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
- 💂 个人网站: IT知识小屋
- 🤟 版权: 本文由【IT学习日记】原创、需要转载请联系博主
- 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
一:什么是对象
定义: 在系统中,对象是用于客观描述一个事物的一个实体,而类这是这类实体的抽象,它是构成系统的一个基本单位。 一个对象由一组描述对象的属性和一组描述对象的动作组成。
类的实例化可以创建对象,每个对象都有它的生命周期,对象的生命周期可以简单的归为:生成、使用、销毁三个阶段。
在JAVA语言中,一个类如果不存在引用时,那它就是一个无用的对象,JAVA的垃圾回收器会自动扫描JVM虚拟机,对这些没有被引用的垃圾对象进行回收,开发者也可以显示调用System.gc()方法告知垃圾回收器进行回收垃圾对象。
但是并不意味着在调用完这个方法后垃圾回收器就会垃圾去回收,具体的回收时间是由垃圾收回器自己确定,调用这个方法只是给垃圾回收器发送一个“信号”,告诉它现在内存不够或者可以去存在垃圾对象需要它回收。
延伸问题一:面向对象有什么特征
面向对象的三大特征:封装、继承、多态
封装: 隐藏对象的属性和实现细节、只提供访问的公共方法,实现的方式是通过访问修饰符来限定。
继承: 继承表示的是一个类拥有另一个类的相关信息,通过关键字extends实现,被继承的类叫父类(基类、超类),得到继承信息的类也叫子类或派生类,JAVA中类只能单继承,但是可以实现多个接口。
多态: 同一个行为可以有不同的表现形式的能力。具体来说就是一个类型可以有多种表现的形式,如:动物可以是狗、也可以是猫,具体如图所示:
延伸问题二:多态有什么优点
对类型解耦,可以使用父类或者接口接收子类对象
可替换性,如实例一个猫对象,可以用动物接收:Animal cat = new Cat()
可拓展性,多态是对象的多种表现形式的体现,很易于拓展,如动物除了猫狗外,还可以是鸡鸭鱼等
更灵活,可以随意拓展新的表现形式而不影响其他的形式
延伸问题三:多态存在的必要条件
1、继承父类或者实现接口
2、重写
3、使用父类/接口接收子类对象
``
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
/**
* 图形
*/
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
/**
* 图形
*/
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、 同一个类中方法重载
class Animal3{
/*
重载实现多态
*/
public void call(){
System.out.println("无参数的叫声");
}
public void call(String mode){
System.out.println("带参数的叫声");
}
}
写在最后
面向对象编程是JAVA语言的核心特点,能否正确理解对象含义对后续的JAVA学习有着至关重要的作用,本文通过通俗的例子介绍了对象的含义和一些特点,希望能够帮助到自学JAVA的小伙伴,下一篇文章再见啦。
如果文章对您有帮助,希望能收到您的点赞、关注、收藏哦!,欢迎进入个人主页添加博主,进行技术交流哦!