面向对象(一)—关于面向对象的那些事


      Java是一种采用面向对象思想的语言,面向对象是一种官方应用的编程思想。

       面向过程是一种以过程为中心,不允许混合持久化状态和域逻辑。就是分析出解决问题所需要的步骤,然后用函数把这些解题步骤实现,使用的时候依次调用函数就可以了。它考虑的是问题的具体实现,一般的面向过程是从上往下步步求精。所以面向过程最重要的是模块化的思想方法,它不适合大的工程。

  面向对象 是一种对现实世界理解和抽象的方法,一切皆对象,对象具有属性与方法,都能够接受数据、处理数据并将数据传达给其它对象。可以很好地与软件工程结合,适合多种开发方式。
Java的面向对象比C++更加的纯粹,比很多OOP语言更加好用。其中类是面向对象的重要内容,可以用类定义变量,这种类型的变量称为引用变量,也就是说所有的类是引用变量。
Java支持面向对象的三大特征: 封装、继承、多态 。封装是指对象的内部状态对外界透明,对象与对象之间只关心对方有什么方法,而不关心属性。继承就是复用 已存在类 的方法和属性,在此基础上,还可以在新类中添加一些新的方法和属性。多态是指不同的对象,收到同一消息可以产生不同的结果, 一个对象可以有多种形态,换句话说多态可以把一个子类对象看作是一个父类对象类型,是编译时的类型变化,而运行时类型不变。
        1:关于方法的重载
Java中允许同一个类中定义多个同名方法,只要形参列表不同便可。如果一个类中包含了两个或两个以上同名方法,但形参不同,则被称为方法重载。确定一个方法需要三点:
a:调用该方法的可以是类也可以是对象;
b:方法名是方法被调用的标示;
c:具有形参列表,当需要调用该方法是参数匹配。
想要实现方法重载,要求同一类中的方法名相同,而形参类型不同,对方法的返回值、修饰符等不作要求。
2:关于封装
封装是编程语言对现实世界的抽象,客观上的元素属性隐藏在对象内部,防止外界随意修改和获取。封装实现了类细节的隐藏,约束了访问数据的方法,保护了数据的信息完整性提高了代码的可维护性。
封住实际上就是将该隐藏的属性隐藏,该暴露的属性暴露。
3:关于继承
Java中使用了extends作为继承的关键字,子类拓展了父类,可以获得父类的属性与方法,但是子类不可以获得父类的构造器。Java只能有一个直接父类,但可以有无数个间接父类。
子类与父类具有相同方法名的现象称为方法重写,可以说子类覆盖了父类的方法。子类复写父类方法时的返回值类型可以与父类不同,应比父类返回值类型更小或者相等;如果此处有异常抛出,则抛出的异常应该比父类抛出的异常更小;子类重写方法的访问权限应比父类更大或相等。
当子类覆盖父类方法后,子类对象无法访问父类中被重写的方法,但可以调用父类中被重写的方法,可以用super或者父类名来调用父类中被重写的方法。
在创建一个子类的对象时,系统会为该类中的实例分配内存,也会为他从父类中继承的实例进行内存分配。(如果子类中的实例名与父类中重名,子类不会覆盖父类中的实例变量,只是隐藏了父类的实例变量。)
4:关于多态
编译时类型与运行时类型不同就是多态,子类是一种特殊的父类,因此可以把一个子类对象直接赋给一个父类引用变量,无需任何的类型转换,或者说由系统自动向上转型。
引用变量在编译阶段只能调用其在编译阶段时类型具有的方法,但是在运行时执行运行时类型具有的方法。由于系统总是试图访问它编译是类型所定义的属性和方法,所以在编写代码时引用变量只能调用声明该变量时所用类里包含的属性和方法。如果需要引用变量调用它运行时的属性或方法,就需要强制类型转换。
5:关于组合
继承破坏了封装,可以采用组合来实现类复用,以提高封装性。如果需要复用一个类可以将该类当成另一个类的组合成分,直接服用该类的public方法。需要注意的是继承设计与组合设计的系统开销不会有本质上的区别。
6:关于构造器
构造器是Java对象创建的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类对象,但这个对象并不是完全有构造器负责创建的。当系统开始执行构造器的执行体之前,系统已经创建了一个对象,只是这个对象不能被外部程序访问,只能在构造器中通过this来引用。当构造器的执行体执行结束后,这个对象作为构造器的返回值返回。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值