面向对象程序设计思想

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

二、对象和类的概念 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、计算坐标与原点距离的平方方法。

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

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

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

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

十九、package和import 为了解决重名冲突的问题,java引入了package的机制 1、package语句为java程序中的第一条语句,指明改文件中定义的类的包,如果使用缺省值,则为无名包 2、如果要找一个子目录,则必须写全package 3、 如果要把一个类打包,在类源文件的第一行写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  y 2、对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、若某个类没有指定父类,则它的父类默认为object 3、Object.toString()直接打印某个类,返回代表类的字符串,在字符意义上代表了这个类,使用hash编码 4、hash编码代表了独一无二的一个对象,通过改该编码可以找到该对象

二十六、Object.equals() 1、public boolean equals(Object obj)定义判断对象是否相等 2、x.equals(y),在x,y为同一对象的引用时返回true,否则返回false 3、jdk中的一些类,如Date,String重写了此方法。此时x,y为同一类对象,且值相等时,返回true 4、可以给用户定义的类重写此方法 5、空值永远返回false 6、判断过程:判断类是否相同,强制转换为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的  接口可以继承其他接口,并添加新的属性和抽象方法  实现接口相当于实现了接口中的抽象方法,此时必须重写接口中的所以抽象方法  可以定义一个接口类型变量指向某一个类,相当于父类指向子类,此时接口类型变量只能使用接口类型中定义的属性

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值