黑马程序员技术交流社区

标题: java面向对象总结 [打印本页]

作者: 张俊飞    时间: 2013-12-17 23:11
标题: java面向对象总结
面向对象概述
  面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
  首先根据客户需求抽象出业务对象;然后对需求进行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装、抽象的编程思想,实现业务需求;最后通过整合各模块,达到高内聚、低耦合的效果,从而满足客户要求。
  面向对象的概念具体要求的确定,各自有各自的理解。
面向对象类与对象
  类是对现实事物的抽象,对象是类的一个实例
  例如,现在定义了一个Person类,它描述的是人这一类事物,里面有各种各样的属性如:name,age等等
  而对象Person p = new Person();就创建了一个这类事物中的一个实例,把抽象的属性具体化了
成员变量和局部变量
  成员变量作用整个类,存在于堆内存中。而局部变量作用域较小,如在某个成员函数中定义的变量,存在于栈内存中。
匿名对象
  如果对对象的方法只调用一次时,为了简化可以使用匿名对象,如:new Person().getname();如果对对象的成员函数有多次调用的话必须给对象起一个名字。
  可以将匿名对象当作实际参数进行使用,如:public void test(Person p){} 当对这个函数进行调用时可以这样写test(new Person)
封装
  是指隐藏对象的属性和实现细节,只队外提供公共访问方式。
静态关键字static
  静态修饰的有成员变量和成员函数。当对象中出现共享数据时,(如,定义student时的school属性)该数据要被静态修饰,当对象中出现特有数据时要定义成非静态。(如,定义student时的name)。
  静态函数:只要函数没有访问内部的非静态变量,那么就可以定义为静态的。如果函数要用到类内部的变量,那么这个变量也必须是静态的。
  静态的特点:可以不建立对象直接用类名来调用类中的静态成员变量和成员函数。
继承
  关键字extends,继承中的父类是对这一类事物的共性抽取,子类是对事物的扩展,例如定义一个父类Person里面包含有基本属性name,age;但如果细分的话有student,有worker。他们需要继承父类的所有人都都有的东西,还要添加进自己的属性。
final关键字
  可以修饰类,变量,和方法。final修饰的类不能被继承,final修饰的方法不能被覆盖,final修饰的变量是一个常量,只能被赋值一次。内部类只能访问被final修饰的局部变量。
  抽象类abstract
  可以修饰类与方法,被修饰的方法即为抽象方法,抽象方法没有函数体,用分号结束,如:abstract void person();
  抽象方法必须放在抽象类内,抽象类内可以定义非抽象方法,而且抽象类的子类必须复写父类中的抽象方法。
  抽象类不能用new创建对象,但可以建立对象的引用
  接口interface{}
  当一个抽象类中的方法都是抽象方法时,那么可以把这个类定义为接口。
  接口中的成员都是public修饰的,因为接口成员有固定的修饰符,所以可以省略不写
  接口可以被类实现,关键字为implements,java中只允许单继承但可以多实现,即可以实现多个接口。
  接口中的方法也必须被子类复写才能创建子类对象
  内部类
  将一个类定义在另一个类里面,里面这个类就叫做内部类。
  内部类可以访问外部类的成员,包括私有成员,而外部类想要访问内部类的成员必须要建立内部类的对象。内部类可以被private修饰
  内部类在主函数中创建对象的格式  外部类 . 内部类 对象名 =  new 外部类构造方法 . new 内部类构造方法
  静态内部类:当内部类定义为静态后,只能访问外部类中的静态成员。当内部类内定义了静态成员,该类必须的静态的
  匿名内部类:定义匿名内部类必须继承一个类或者实现接口,如果person是一个抽象类,可以用下面的方法创建匿名内部类
  new Person()
  {
  复写方法
  }
  提示:new Person(){}后面跟大括号相当于建立了一个person的子类对象
  封装
  封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
  好处:
  将变化隔离。
  便于使用。
  提高重用性。
  提高安全性。
  封装原则:
  将不需要对外提供的内容都隐藏起来。
  把属性都隐藏,提供公共方式对其访问。
  关键字private:
  私有,权限修饰符:用于修饰类中的成员。私有只在本类中有效。
构造函数
  特点:
  函数名与类名相同
  不用定义返回值类型
  不可以写return语句
  作用:
  给对象进行初始化,对象一建立就会调用与之对应的构造函数。
  小细节:
  当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函        数
  构造代码块:
  给对象进行初始化
  对象一建立就运行,而且优先于构造函数执行
  和构造函数的区别:
  构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
  注意:
  构造函数是可以被私有化的,私有化后,此类无法创建对象。
关键字this:
  This代表它所在函数所属对象的引用,简单说就是那个对象在调用this所在函数,        this        就代表那个对象。
主函数:
  主函数的定义:public static void main(String[] args){}
  主函数是一个特殊的函数,作为程序的入口,可以被jvm调用。
  主函数的定义:
  Public:代表着该函数的访问权限是最大的
  Static:代表着主函数虽累得加载就已经存在了
  Void:主函数没有具体的返回指
  Main:不是关键字,但是是一个特殊的单词,可以被jvm识别
  函数的参数(String[] args):参数类型是一个数组,该数组中的元素是字符串。
  注意:主函数的格式是固定的,只有参数名可以修改。
静态的使用:
  什么时候用静态变量:
  当对象中出现共享数据时,该数据要被静态所修饰。对象中的特有数据要定义成非        静态存在于堆内存中
  什么时候用静态函数:
  当功能内部没有访问到非静态数据时,该功能可以被定义成静态的。
  将方法定义成静态后,可以直接用类名对其惊醒调用。
多态:
  定义:某一类事物的多种存在形态。例如:人有男女之分
  多态的体现:
  父类的引用指向了自己的子类对象。父类的引用也可以接受自己的子类对象
  多态的好处:
  多态的出现大大提高了程序的扩展性。
  多态的前提:
  必须是类与类之间有关系,要么继承,要么实现。
  多态的弊端:
  虽然多态提高了扩展性,但是只能使用父类的引用访问父类中的成员。
  多态转型:
  千万不要将父类对象强转成子类类型。我们能转换的是父类引用指向了自己的子类        对象时,该引用可以被提升,也可以被强制转换。
  多态自始至终都是子类在做着变化。
  多态中成员函数的特点:
  在编译时期:参阅引用类型变量所属的类中是否有调用的方法。如果有,变异通过,        否则,编译失败
  在运行时期:参阅对象所属的类中是否有调用的方法
作者: 闭眼就天黑    时间: 2013-12-18 20:26
{:soso_e179:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2