欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面向对象

程序员文章站 2022-04-12 22:52:50
...
面向对象有三个特性:封装,继承,多态。
除了这三个特征面向对象最重要的就是抽象,抽象就是将一类共同拥有同一种或多种特征的对象形成一个类的过程,抽象只关心是否是相同的属性和方法,而不关心属性的具体值和方法的具体执行。

封装就是就是将对象的属性和基于该属性得方法装到一个类中,然后将类的属性隐藏起来,尽量通过调用类中的方法来改变属性的数据,封装能够隐藏一切可隐藏的东西,只将类的某些接口提供给外界。

比如未封装前你可以通过dog.size=23;来设定size的值,可以看出这样会将Dog类中的实例变量暴漏出来,封装就是在类中定义方法来设定size的值,例如用setSize来设定size值和getSize来返回size的值。我们还可以在方法中设置向size赋值的限制条件,比如size不可能为负,我们就可以在setSize设定if size>0则this.size=size;返回size值else就打印赋值错误。

继承就是通过已有类的属性和方法来新建类的过程,被继承的类叫做父类,继承的类叫做子类,子类会根据父类实例变量和方法的访问权限修饰符来决定是否会继承父类的实例变量和方法,继承的子类在创建对象的时候会先调用父类的构造函数;一般来说,使用继承是为了更好的复用已有的代码和功能。

访问权限修饰符如下:
面向对象
            
    
    博客分类: java基础学习 对象 

子类也可以重载(overload)和覆盖(override)父类的方法。

是重载还是覆盖只要看方法的入参(方法中传入的参数),方法名相同和返回类型。
覆盖又叫作重写,所以可以说覆盖父类方法就是重写父类方法的方法体,但是返回类型必须一样或者兼容(兼容是指可以返回一样的类型或者该类型兼容的类型,如int可以被long兼容,输入参数要相同,方法名必须相同。注意,在覆盖方法时不能降低方法的访问权限!!!(例如父类中的test方法权限修饰符是public,那在子类覆盖的test方法就不能是default和private)

重载的要求方法名也要一样,输入参数可以不一样,返回类型也可以*的定义,并且可以随意的改变访问权限。重载的方法代表着相同名字的不同方法,与覆盖有很大的区别。

多态就是指允许不同类的对象对同一消息做出不同的响应。多态存在的三个必要条件:
一、要有继承;
二、要有覆盖;
三、父类引用指向子类对象。

创建对象
在JAVA中创建对象一般都是用new关键字来创建的对象,也有些类中的方法会返回一个新的对象。Dog a=new Dog();第一步定义一个Dog类型的引用变量a ;之后再在堆上创建一个新的Dog类的对象,第三步将新建的对象指向引用变量a;这时引用变量a是在栈上,a的值为一个字节码。如果对象在堆上没有被任何引用变量引用,那么这是java中的GC(垃圾回收机制)就会登场将对象回收,清理内存。
  • 面向对象
            
    
    博客分类: java基础学习 对象 
  • 大小: 31.4 KB
相关标签: 对象