java基础| 面向对象编程基础

啥叫面向过程?就是自顶向下,逐层分解(巴拉巴拉.....)。

面向过程vs面向对象:

面向过程:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源 ; 比如单片 机、嵌入式开发、 Linux/Unix 等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
 
面向对象:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低 耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低
 
        面向过程会让一个类越来越全能,就像一个管家一样做了所有的事 面向对象的编程方式使得每一个类都只做一件事, 像是雇佣了一群职员,每个人做一件小事,各司其职,最终合作共赢!
 
        面向过程 (OP) 和面向对象 (OO) 本质的区别在于分析方式的不同,最终导致了编码方式的不同。
 
        软件工程追求的目标之一就是可维护性,可维护性主要表现在 3 个方面:可理解性、可测试性和可修改 性。面向对象的好处之一就是显著的改善了软件系统的可维护性。
 
        面向对象的四大特性: 抽象封装继承多态
 
  • 抽象类
         在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对 象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式 和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶 段决定要不要设计抽象类。 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。 Java 语言中使用 abstract class 来定义抽象类。
  • 封装
         在面向对象程式设计方法中,封装(英语: Encapsulation )是指一种将抽象性函式接口的实现细节部 分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
  1.  良好的封装能够减少耦合。
  2.  类内部的结构可以自由修改。
  3.  可以对成员变量进行更精确的控制。
  4.  隐藏信息,实现细节。
        采用 this 关键字是为了解决实例变量( private String name )和局部变量( setName(String name) 中的name 变量)之间发生的同名的冲突。
  •  继承
         继承是 java 面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类 继承方法,使得子类具有父类相同的行为。
        
        继承格式: class 子类 extends 父类 { }
         需要注意的是 Java 不支持多继承,但支持多重继承。
        
继承的特性
  1. 子类拥有父类非 private 的属性、方法。
  2. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  3. 子类可以用自己的方式实现父类的方法。
  4. Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
  5. 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
        继承可以使用 extends implements 这两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承 object (这个类在 java.lang 包中,所以不需要 import )祖先类。
        
extends 关键字
        在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
implements 关键字
        使用 implements 关键字可以变相的使 java 具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)
super this 关键字
        super关键字:我们可以通过 super 关键字来实现对父类成员的访问,用来引用当前对象的父类。
        this关键字:指向自己的引用。
final 关键字
        final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写。 : 实例变量也可以被定义为  final ,被定义为 fifinal 的变量不能被修改。被声明为 final 类的方法自动地声明为final ,但是实例变量并不是 final。
构造器
        子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。
        如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。
  • 多态
         多态是同一个行为具有多个不同表现形式或形态的能力。常见的多态有重载重写
多态的优点
消除类型之间的耦合关系
  1. 可替换性
  2. 可扩充性
  3. 接口性
  4.  灵活性
  5.  简化性
多态存在的三个必要条件
  1. 继承
  2. 重写
  3. 父类引用指向子类对象
        当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
        多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
多态的机制
        Java 提供了编译时多态和运行时多态两种多态机制。前者是通过方法重载实现的,后者是通过方法的覆盖实现的。在方法覆盖中,子类可以覆盖父类的方法,因此同类的方法会在父类与子类中有着不同的表现形式。
        在Java 语言中,基类的引用变量不仅可以指向基类的实例对象,也可以指向其子类中的实例对象。同样,接口中的引用变量也可以指向其实现类的实例对象。而程序调用的方法在运行时期才动态绑定(绑定是指将一个方法调用和一个方法主体联系在一起),绑定的是引用变量所指向的具体实例对象的方法,也就是内存中正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。通过这种动态
绑定实现了多态。由于只有在运行时才能确定调用哪个方法,因此通过方法覆盖实现的多态也可以被称为运行时多态
 
 
 
 
 
 
 
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值