面向对象
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.访问的是当前对象的属性或方法。
单行注释和多行注释用于方法或语句块中,给某一行或某一段代码的说明。
文档注释用于类、方法、属性前面。
jdk中bin下,有一个javadoc.exe文件,用于产生帮助文档。
-encoding utf-8 -charset utf-8
继承:
继承是一种代码重用的方式。子类通过继承父类,可以重用父类中定义的属性和方法。另外,在子类中,还可以定义子类特有的属性和方法。继承采用关键字extends。
继承的使用原则:
观察要使用的类,确定它们之间共同的和特有的特征和行为,将这些共性。数据迁移到父类里。便于子类中进行方法和属性的重用。
对于不同的特征和行为,在子类里可以重新定义。
单继承与多继承:
在java中,一个类只能有一个父类不能继承两个父类。
所以的类都之间或间接都继承object类。
GUl简介:
是图形用户界面(Graphics User lnterface)
Awt:
awt是使用操作系统的本身提供组件风格来构建Java的gui组件。所以在跨平台时,显示风格不一致。
Swing:
弥补了awt类包的不足,有自己的显示风格,这样在跨平台时,显示风格会保持一致
GUI窗体中加入组件的步骤:
1. 设置布局管理器
2. 创建GUI组件对象
3. 将GUI组件对象加入窗体
javaGUI组件遵循先进先出,后进后出的原则
多态:
多态,允许使用父类变量指向子类对象,允许使用接口变量指向实现类对象,但反过来却不行。
一句话描述多态:相同的行为,不同的实现。
多态具体表现为重载和重写
多态主要应用于多态参数和多态集合
多态总结:
使用父类类型的引用指向子类的对象。
该引用只能调用父类中定义的方法,不能调用子类中独有的方法
如果子类中重写了父类中的一个方法,那么在调用该方法的时候,将会调用子类中的这个方法。
在多态中,子类可以调用父类中的所有方法。
多态主要体现为重载和重写。相同的行为不同的实现方式
多态主要应用为多态参数和多态集合
子类:
子类对象建构时,会先调用父类的构造方法,产生父类对象。然后,在父类对象基础上,扩展子类特有的属性和方法。所以子类对象包含一个完整的父类对象,可以重用父类中的定义的属性和方法。
Super:
Super表示父类对象,子类构造方法第一句,必须书写super(),调用父类构造方法产生父类对象。如果没有写,虚拟机会默认执行super()。但是如果父类中没有定义无参构造方法。子类构造方法必须显示调用。
重写:
重写发生在父类和子类之间,子类方法名和父类相同,参数列表相同,返回类型也相同。在调用方法时,优秀调用子类重写方法。
@Override:
@Override注解,可以强制检测子类方法是否重写了父类方法。如果该子类方法没有重写父类方法,那么编译错误。
final:
final可以修饰类、方法、变量。修饰类表示该类不能被谁继承。修饰方法,表示方法不能被子类重写。修饰变量,表示该变量的值不能改变。基本数据类型变量声明为final,表示该变量的值不能改变。引用数据类型变量声明为final,表示该变量不能引用别的对象。
多态调用时,父类变量指向子类对象,只能调用父类中定义的属性和方法,不能调用子类特有的属性方法。
输入值调用2个相同的方法,优秀选着更小的类型。
public、protected、默认、private 从大到小
!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章