面向对象程序设计思想

来源:互联网 发布:网络开发 编辑:程序博客网 时间:2024/04/29 10:37

一、面向对象程序设计思想 程序语言的发展:面向过程和面向对象的比对。复用层次上的不同。合适的方法应该出现在合适的类中 面向对象的设计思想:基本思想是从实际世界中存在的事物出发去构建系统。尽量使用人的自然思维。更加强调人的正常思想的思维方式和原则,如抽象分类等。

二、对象和类的概念1、对象:对象对问题域中的事物进行描述。对象通过属性(Attribute)和方法(method)对事物本身的静态属性和动态方法进行描述2、类是用于描述同一类型的对象的抽象概念,类中定义它所应该具有的静态属性和动态方法3、类可以看作一类对象的模板,对象可以看作类的一个具体的实例。

三、关联关系:方法的参数是某一对象的类型(引用),最弱的一种关系

四、继承关系:继承树,派生

五、聚合关系:整体和部分的关系。如球队和球员,队长;手脚和人的关系

六、实现关系:interface,接口。子类对于父类有自己的关系,父类的某一个方法需要子类去实现它。

**七、面向对象思维的要点 考虑有哪些事物参与,不考虑过程 每一个类的属性和方法是哪些 类之间的关系有哪些

八、java与面向对象1、对象是java的核心2、对象可以看成是动态方法和静态属性的封装体3、类是用来定义一类对象的模板,在一个类中定义了该类所应该具有的所有静态属性和动态方法。4、jdk提供了类供使用,也可以使用自己定义的类。public class Dog { int  furColor; float height; float weight; void catchMouse (mouse m) {  m.scream(); } public static void main(String[] args) {  Dog d=new Dog();  Mouse m = new Mouse();  d.catchMouse(m); }}

九、为什么使用面向对象 reusability,extensibility可重用性和可扩展性,组件相当于很多个类,比对象具有更高层次上的抽象,包括EJB.WebService,CORBA,COM

十、java中面向对象和内存解析1、java类的定义方法 用class定义一个类2、 类主要有成员变量和方法组成。 [(modifiers)] type <att_name> [=default value] [(modifiers)] type <return_type> <name> [<arg_list>] { [<statements>]} 3、成员变量 1、引用和基本类型 2、可以初始化也不进行初始化,不初始化将使用默认值0.0,boolean的初始值是false 3、局部变量和成员变量要相互区分开 4、成员变量的作用域在类中4、引用 java中除了基本数据类型就是引用数据类型 java中对对象的操作是通过引用完成的 String s;//声明一个应用变量,但没有指向任何值 s=new String("xxxxx");//在堆内存中新建一块内存,他的值是"xxxxx",地址是"yyyyy"在栈中有一块内存,类型是String,值是s,它指向"yyyyy",此时可以通过s对其进行操作5、如何在内存中区分类和对象 类是静态的概念 对象是new出来的,它在heap中,类的每一个成员变量在对象中都有不同的值(静态对象除外)而方法只有一份,它只有在执行时才占用内存 对象因为是动态生成的,所以运行时位于对内存中

十一、对象的创建规则1、new关键字2、对象.成员变量3、对象.method(args_list)4、同一类的每一个对象都有不同的成员变量存储空间5、同一类的对象共享该类的方法

十二、类和对象的关系如下代码public class c { int i; int j; public static void main(String[] args) {  C c1=new C();  C c2=new C(); }}在stack中存在两变量c1,c2,分别指向heap中的两块内存区域,并分别有c1.i,c2.i两个int类型变量

十三、构造方法1、用new construction()创建一个对象2、构造方法是一个定义来初始化对象的函数 3、构造方法与类同名构造方法的内存情况 没有指定构造方法时,编译器自动添加一个空的构造方法 错误:找不到符号,是定义变量等出了问题 构造函数没有返回值,如果加上return,则会使用系统默认构造函数

十四、约定俗称的命名规则1、类名的首字母大写2、变量名和方法名首字母小写3、使用驼峰命名规则练习: 定义三维空间点1、生产特定坐标的函数,2、设置坐标的方法,3、计算坐标与原点距离的平方方法。

十五、方法重载和内存解析方法重载是指一个类中名字相同而参数不同的几个函数。调用时根据不同的参数列表选择不同的方法参数个数不同,参数类型不同。**返回值不同不构成重载,出现重名错误

十六、对象创建和使用小结内存共享,属性各异,方法共享。非静态方法针对某一对象进行调用。必须对其进行实例化后使用。

十七、this1、类定义中使用this关键字代表该方法的对象的引用2、必须指出当前使用的方法是谁时使用this3、有时可以使用this去处理方法中成员变量和参数重名的情况4、this可以看作变量,它的值为当前对象的引用this指向对象本身,在stack中建立一个this的引用指向调用的对象

十八、static1、static是共有成员,对类来说,static只有一个,static保存在data segment中。2、静态值的访问:所有对象都可以访问静态值,类.成员表示静态值3、字符串常量保存在data segment中4、静态值常用于计数5、**静态方法不用将对象的引用传递给它,所以在static方法中不能访问非static成员(静态方法不是针对每一个对象的调用)6、使用对象引用或者类名访问static

十九、package和import为了解决重名冲突的问题,java引入了package的机制1、package语句为java程序中的第一条语句,指明改文件中定义的类的包,如果使用缺省值,则为无名包2、如果要找一个子目录,则必须写全package3、 如果要把一个类打包,在类源文件的第一行写package 保证class文件位于正确的目录下,源代码可能产生影响,删除或移走会产生影响 另外的类如果想访问某一个包,需要写全类名,引入包,如果访问位于同一个包中的类,则不需要引入 必须让class文件的最上一层包的父目录位于classpath下。 执行一个类需要写全包名4、jdk中主要的包的介绍 lang核心类,awt抽象窗口工具集,net 网络,io输入输出,util实用工具,其中java.lang不需要引入5、打包jar,文件位于工作路径的上级目录java -cvf *.jar(*.*) 可以直接将jar文件设入class path中 写了package必须将class文件位于路径之下

二十、继承和全线控制1、访问控制 权限修饰符 类内部 同一个包 子类 任何地方 private  y  n   n  n default  y  y   n  n protected y  y   y  n public  y  y   y  y2、对class修饰只能使用public和default public可以在任何地方访问,default类只能在一个包的内部进行访问 default就是包权限,包内的其他类可以访问,子类或不同的包内的类不能访问。 protected子类可以直接访问3、类的继承和权限控制 java使用extends关键字实现类的继承机制  <modifier> class <name> [extends <superclass>] {} 通过继承,子类自动拥有了父类的所以成员变量和方法 java只支持但继承,不能多继承,即一个子类只能有一个父类,一个父类可以有多个子类** cmd 中的文件也是区分大小写的4、内存中,子类对象包含父类对象

二十一、方法重写1、子类可以根据父类中继承的方法进行重写2、重写必须具有和被重写的方法具有相同的名称,参数名和返回类型3、重写方法不能具有比被重写方法更加严格的访问权限

二十二、super关键字和this关键字类似,指向的是父类对象。

二十三、继承中的构造方法1、子类的构造过程要先调用父类的构造函数2、子类可以使用super()调用父类的构造方法,重载时需要通过参数列表进行区分3、可以使用this调用自己,如果使用super(),则此代码必须写在子类构造方法的第一行,否则会出错

二十四、jdk_api文档查询位于jre/lib/rt.jar中,

二十五、Object.toString()1、Object是所以类的基类2、若某个类没有指定父类,则它的父类默认为object3、Object.toString()直接打印某个类,返回代表类的字符串,在字符意义上代表了这个类,使用hash编码4、hash编码代表了独一无二的一个对象,通过改该编码可以找到该对象

二十六、Object.equals()1、public boolean equals(Object obj)定义判断对象是否相等2、x.equals(y),在x,y为同一对象的引用时返回true,否则返回false3、jdk中的一些类,如Date,String重写了此方法。此时x,y为同一类对象,且值相等时,返回true4、可以给用户定义的类重写此方法5、空值永远返回false6、判断过程:判断类是否相同,强制转换为object,变成要进行比较的类??7、不能使用==进行String类的相等判断,静态变量一定相等

??二十七、对象装型(casting)1、一个基类的引用型变量可以指向其子类的对象2、一个基类的引用不能访问其子类新增加的成员3、可以使用引用变量.instanceof(类名)判断该引用指向的对象是否属于该类或该类的子类4、子类对象可以当成基类对象称为向上转型,反之称为向下转型 父类可以自己new成子类对象,此时变量被当成父类,只能使用父类成员,但它的类已经变成了父类。instanceof查的是他的定义类型而不是内存类型。如果要访问其成员则需要使用强制类型转换。传递参数时,可以要求传递对象的子类5、casting用于扩展程序,不改变主结构

二十八、多态1、动态绑定和多态(迟绑定late binding) 动态绑定:执行期间自动判断引用的实际类型,根据实际类型调用相应的方法 定义为一个父类的引用,使用时具有最大的灵活性 子类传给方法则父类引用指向子类,父类不能访问子类新增加的成员,当方法被重写以后,其调用实际的方法,根据参数类型去确定。 动态绑定用于在实际中查找参数的类型2、多态的必要条件 继承、重写、父类引用指向子类对象

二十九、抽象类1、使用abstract修饰2、抽象类必须被继承,抽象方法必须被重写。3、抽象类或者方法用于没有实现但是有定义的必要的时候4、不用实现,抽象方法是用来重写的5、有抽象方法的类必须被定义为抽象类6、继承抽象类必须重写抽象方法,或者重写一边抽象方法7、抽象类不能实例化如构建动物的类,动物叫是一个抽象方法,它不需要实现,由它的子类去实现

三十、final关键字用于方法不需要被重写时1、final不能改变,成员变量,局部变量2、final不能被重写3、final不能被继承

三十一、接口1、多个无关类可以实现同一个接口2、一个类可以实现多个无关的接口3、与继承类似,接口与实现类之间存在多态性4、定义java类的格式 <modifier> class <name> [extends <superclass>] [implements <interface>, [implements <interface>,]] {}5、接口 抽象方法和常量值定义的集合 接口是特殊的抽象类,它只有方法的定义额常量,而没有变量和方法的实现6、接口的特性 可以多重实现,一个类可以实现多个接口 接口声明属性默认为public static final 接口方法只能是抽象方法,只能是public的 接口可以继承其他接口,并添加新的属性和抽象方法 实现接口相当于实现了接口中的抽象方法,此时必须重写接口中的所以抽象方法 可以定义一个接口类型变量指向某一个类,相当于父类指向子类,此时接口类型变量只能使用接口类型中定义的属性

原创粉丝点击