面向对象

Posted chenqingde

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。

 

万物皆对象,对象因我关注而产生。

OO:面向对象

OOA:面向对象编程

OOD:面向对象设计

面向对象的三个特征:继承,封装,多态。

技术图片技术图片 

 

 

技术图片 

技术图片 

技术图片                      

                     

技术图片                      

技术图片                      

技术图片 

 

 

 

堆:

存放的是成员变量。(也叫属性,在方法外,在类里,定义的变量)特点:随着对象而产生,随着对象销毁而销毁。(先进后出)

栈:

存放的是局部变量。(在方法和语句块内部定义的变量)特点:当方法和语句块一结束,空间立即释放。

数据段:

存放的是类变量。(也叫静态变量,和成员变量相比多加上关键字static)特点:长驻内存,创建好以后,不会消失。

代码段:

是存放了程序代码的数据。特点:在代码中,也有可能包含一些只读的常数变量,列如字符串常量等。

 

在结构化编程中:

程序围绕着要解决的任务来设计。

面向对象编程中:

程序围绕着问题域中的对象来设计。

面向过程总结:

优点:性能比面向对象高,因为类调用时需要实例化,

 

属性:

是指对象身上的行为,属性是动词。

面向对象:

一种认识事物的方式,注重对事物整体的认知,最符合人类自然的思维习惯。

:

类是具有相同属性和行为的一组对象的集合。

  在软件系统中,我们用类来模拟现实生活中的实体。

  类是对象的抽象,对象是类的实例。

 

 Java的数据类型分为两种:

基本数据类型                                              引用数据类型

基本数据类型的变量中存放的是具体的数据。

而引用数据类型变量中存放的是对象引用(地址)

基础数据类型有8种:

byet(-128 127),short,int,long,flost,double,char,boolean

byt

   整型和整型运算结果至少是int

引用数据类型有3:

                   类,数组,接口。

垃圾回收:

         回收的是内存中没有变量引用,同时没有被使用的对象。

Null

null表示在引用类型变量中没有存放任何对象的引用。对null值调用属性和方法,会抛出空指针异常。Java.lang.NullPointerException.

局部变量:

方法的语句块内部定义的变量(栈空间,当方法或语句块一结束,局部变量空间马上释放)

成员变量(属性):

方法外部、类的内部定义的变量(堆空间,随对象产生而产生,随对象销毁而销毁

类变量:

加上了关键字static(数据段,常驻内存,虚拟机关闭消失)

 

 

成员变量和静态变量的区别:

 

1.成员变量包含在对象之中,每一个对象都有独立的成员变量。一个对象成员变量的改变,不会影响别的对象。静态变量独立在对象之外,所有对象共享静态   变量。静态变量值的改变,会影响所有对象。

 

2.成员变量跟随着对象存放在堆空间中,静态变量存放着在数据段中。

 

3.静态变量在类加载时产生,产生在对象之前。成员变量随对象产生而产生,随对象销毁而销毁

 

4.静态变量可以通过对象.和类名的方式调用。而成员变量只能通过对象.

= +=的区别:

 

              =  是复制对面的值若两个类型不一样且需要强制转换。

             += 是赋值对面的值若两个类型不一样直接进行强制转换。

包:

 

在一个包中,如果要使用另一个包的类,那么需要通过import导入该类,本包中的类。

java.lang包中的类,无需导入即可直接使用。

 

包的作用:

 

         可以组织相关的类

         可以做到信息的隐藏

 

成员方法和静态方法的区别:

 

          成员方法只能通过对象.的方式调用,静态方法可以通过对象.和类名.的方式访问

 

静态方法在类加载时加载,不能直接访问成员变量和成员方法。成员方法在产生对象时加载,可以直接访问变量,成员方法,静态变量,静态方法。

 

在方法之间传递和返回对象,传递和返回的时对象的引用。

 

方法重载:

方法重载发生在同一个类中,两个方法的方法名。参数列表不同(类型、个数、顺序),根据调用方法的实参,来决定执行那个重载方法。

      

构造方法(构造器):

                构造方法的方法名和类名相同,没有返回类型(包括void)。构造方法主要用于产生对象.

如果一个类声明为public,那么该类的类名和文件名必须一致。

 

构造方法的作用:

1.为对象在堆空间中分配空间

2.初始化成员变量

               3.返回对象的引用

 

如果一个类没有定义构造方法,虚拟机会默认分配一个公有的无参构造方法。但是,如果该类中定义了构造方法,默认的无参构找到方法就会消失。

 

在方法中访问变量,会优先访问局部变量。如果局部变量不存在,那么,在访问成员变量或静态变量。this表示当前对象,this.访问的是当前对象的属性或方法。

 

单行注释和多行注释用于方法或语句块中,给某一行或某一段代码的说明。

文档注释用于类、方法、属性前面。

 

jdkbin下,有一个javadoc.exe文件,用于产生帮助文档。

-encoding utf-8 -charset utf-8

继承:

     继承是一种代码重用的方式。子类通过继承父类,可以重用父类中定义的属性和方法。另外,在子类中,还可以定义子类特有的属性和方法。继承采用关键字extends

 

继承的使用原则:

               观察要使用的类,确定它们之间共同的和特有的特征和行为,将这些共性。数据迁移到父类里。便于子类中进行方法和属性的重用。

 

对于不同的特征和行为,在子类里可以重新定义。

 

单继承与多继承:

                java中,一个类只能有一个父类不能继承两个父类。

                所以的类都之间或间接都继承object类。

GUl简介:

是图形用户界面(Graphics User lnterface)

 

Awt:

awt是使用操作系统的本身提供组件风格来构建Javagui组件。所以在跨平台时,显示风格不一致。

 

Swing

弥补了awt类包的不足,有自己的显示风格,这样在跨平台时,显示风格会保持一致

GUI窗体中加入组件的步骤:

1. 设置布局管理器

2. 创建GUI组件对象

3. GUI组件对象加入窗体

 

javaGUI组件遵循先进先出,后进后出的原则

 

多态:

     多态,允许使用父类变量指向子类对象,允许使用接口变量指向实现类对象,但反过来却不行。

   一句话描述多态:相同的行为,不同的实现。

多态具体表现为重载和重写

     多态主要应用于多态参数和多态集合

多态总结:

         使用父类类型的引用指向子类的对象。

         该引用只能调用父类中定义的方法,不能调用子类中独有的方法

         如果子类中重写了父类中的一个方法,那么在调用该方法的时候,将会调用子类中的这个方法。

         在多态中,子类可以调用父类中的所有方法。

         多态主要体现为重载和重写。相同的行为不同的实现方式

         多态主要应用为多态参数和多态集合

        

 

 

子类:

子类对象建构时,会先调用父类的构造方法,产生父类对象。然后,在父类对象基础上,扩展子类特有的属性和方法。所以子类对象包含一个完整的父类对象,可以重用父类中的定义的属性和方法。

 

Super

Super表示父类对象,子类构造方法第一句,必须书写super(),调用父类构造方法产生父类对象。如果没有写,虚拟机会默认执行super()。但是如果父类中没有定义无参构造方法。子类构造方法必须显示调用。

 

 

重写:

重写发生在父类和子类之间,子类方法名和父类相同,参数列表相同,返回类型也相同。在调用方法时,优秀调用子类重写方法。

 

@Override

@Override注解,可以强制检测子类方法是否重写了父类方法。如果该子类方法没有重写父类方法,那么编译错误。

 

final:

     final可以修饰类、方法、变量。修饰类表示该类不能被谁继承。修饰方法,表示方法不能被子类重写。修饰变量,表示该变量的值不能改变。基本数据类型变量声明为final,表示该变量的值不能改变。引用数据类型变量声明为final,表示该变量不能引用别的对象。

 

多态调用时,父类变量指向子类对象,只能调用父类中定义的属性和方法,不能调用子类特有的属性方法。

 

输入值调用2个相同的方法,优秀选着更小的类型。

 

publicprotected、默认、private 从大到小

以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章

224 面向对象编程介绍,面向过程与面向对象

面向对象-面向对象和面向过程的区别

面向对象分析与设计面向对象设计包括哪些内容

面向对象

面向过程面向对象及面向对象的三大特征

Python面向对象学习 1 (什么是面向对象,面向对象的应用场景)