面向对象知识点复习

面向对象知识点复习

知识点梳理

在面向对象程序设计当中,类和对象是两个最基本的概念。类是一批对象的抽象,是各个对象共性的总结和体练。对象则是某个类的实例化,因此对象才是程序参与各种事务处理的主体。

Java语言提供了对创建类和创建对象的语法支持。下面是Java语言定义类的语法格式:

[类修饰符]class 类名
{
构造方法
属性
方法
.....
}
  • 类修饰符:对于外部类可以使用public、final或者省略符修饰,内部类还以使用protected和private修饰
  • 类名:描述一个类具体特征的名字,只要是合法的标识符即可,但是为了程序具有更好的可读性和可维护性,建议按照标准的类命名规则给类起名字
  • 构造方法:用于一个创建一个类的实例的方法,构造方法必须与类名相同,不能有返回值,可以重载。
  • 属性:定义该类或该类实例中所包含的数据
  • 方法:用于定义该类或该类实例的行为

定义属性的格式为:

[修饰符] 属性类型 属性名 [=初始化]
  1. 修饰符:修饰符可以省略,也可以是public、protected、private、static、final。其中public、protected、private为该属性的访问权限,最多只能出现其中的一个,它可以与static,final组合起来修饰属性。修饰符static修饰的成员属性表示它属于这个类共有,而不属于该类的某个对象。修饰符final修饰的成员属性为常量属性,其值不可改变
  2. 属性类型:可以是Java支持的任意基本数据类型或则引用类型
  3. 属性名:描述一个属性特征的名字,只要是合法的标识符即可
[修饰符]方法返回值类型 方法名(形参列表)
  • 修饰符:修饰符可以省略,也可以是public,protected,private,static,final,abstract。其中public、protected、private为该方法的访问权限,最多只能出现其中的一个。abstract表示该方法为抽象方法,在该类中没有实现,需要在其子类中实现。而final表示该方法为最终方法,不能再子类中覆盖,所以abstract和final只能出现其中之一,不能同时出现。修饰符static调用static的方法和static的成员,而不能调用非static的方法或非static的成员
  • 方法返回值类型:可以是Java支持的任意基本数据类型或者引用类型
  • 方法名:描述该方法的功能特征的名字

简述面向对象和面向过程区别

面向过程的程序设计方法是一种结构化的程序设计方法。它是以过程为中心,按照一定的顺序和步骤,自顶向下逐步求精的一种程序设计方法。在进行面向过程的程序设计时,通常会将问题按照功能划分为一个一个的子模块,一个模块可以独立完成一个功能,模块之间是调用程序一级一级地自上而下地顺序执行,最终解决整个问题

C语言就是一种典型的面向过程的程序设计语言。在进行C程序设计时,最核心的内容就是设计每一个函数,其实一个完整的C语言说到底就是从main函数开始,逐级调用一个个子函数而构成的程序。每个子函数都可以实现一个特定的功能,而一个子函数也可以由多个规模更小,功能更为单一的子函数构成。所以面向过程的程序设计方法更适合于功能相对简单、处理流程相对清晰的软件程序开发。

面向过程的程序设计就时自上而下逐步求精的过程,通过对各个功能的实现来构建程序整体的功能

面向对象编程是一种以事务为中心的编程思想,这种编程思想模拟了客观世界事物的真实存在方式,用更加符合常规的思维方式来处理客观世界的问题。在面向对象的程序设计中,将事物的共性抽象为类,并在类中封装了该类自身的属性,定义了该类自身行为的方法。而在运行的程序中,则要通过类的具体实例化实例,即对象,来实现某个具体的功能。同时,对象与对象之间可以通过消息进行通信,这样可以利用多个对象共同完成一件事情。所以面向对象的程序设计更适合于一些功能强大、结构和流程相对复杂的软件系统开发。

面向对象的程序设计主要任务就是设计一个一个类,继而简化成一个个对象,然后通过对象自身的属性和方法以及对象之间的交互来实现软件的功能。

简述面向对象的基本特征

1.抽象

抽象是面向对象的重要特征之一。所谓抽象就是将某类事务的共性抽离出来,构成这类事物共有特性的集合,即类。抽象包括两个方面,一是过程抽象,而是数据抽象。举例来说:定义一个Animal类:

public class Animal{
    public int weight;
    public int age;
    public int gender;
    public void eat(){System.out.println("eat....")};
    public void sleep(){System.out.println("sleep..")};
}

Animal类是动物类,这里将动物的一些基本共性抽象而来。例如,每个动物都有自己的体重weight、年龄age以及性别gender。另外,任何动物都会睡觉sleep()和吃饭eat().所以将这些动物的共性抽象出来就组成了Animal类,其他个体动物类型(例如,猫、狗)都可以从Animal类中派生出来。这里sleep()和eat()方法的定义属于过程抽象,age等属性的定义属于数据抽象

继承

继承是指一个新类继承了原始类的特性。在这对继承关系中,新类型称为原始类的派生类或者子类,原始类称为新类的基类,或者父类。在类的继承关系中,子类可以从其父类中继承方法和属性以实现代码的复用。同时子类也可以修改继承来的方法或者增加新的方法,以便更加符合子类的需求。如果定义了一个cat类,就可以从Animal类继承

class cat extends Animal{
    public void catchMouse(){
        System.out.println("catch mouse..");
    }
}

由于cat类继承自Animal类,所以Animal类中的一些属性和方法可以被cat类复用(是否能被复用具体要看属性和方法的访问权限),这也是继承的优点所在。另外,子类中也可以增加新的方法,例如cat类中增加catchMouse()方法,这是cat类的特性,因为只有猫才会捉老鼠,所以该方法不应定义在Animal类中。通过继承可实现一定程度上的代码复用

封装

封装是指一个类将自己的数据和一些方法的实现细节进行隐藏,之暴露出一些开放的的接口供外界访问。封装是类对自身数据和内部行为的一种保护措施,增加了代码的安全性和可靠性。

例如,在前面cat类的定义中将catchMouse()定义为public访问权限,这样就可以在类的外部直接通过cat对象访问这个方法(即catchMouse()是开放的接口供外界访问),而在catch-Mouse()方法中还可能调用一些其他的方法,这些方法可能就不适合作为开放的接口使用,所以把它们定义为private访问权限,这些方法可能不是可作为对外开放的接口使用,所以可以把它们定义为private访问权限,这样就实现了对方法的隐藏,也就是对外界透密那个,而暴露出去的接口只有carthMouse()

多态

多态是指允许不同类的对象对同一消息做出自己不同的响应。多态性语言具有灵活、抽象、行为共享、代码共享等优势,在程序设计开发及设计模式中应用十分广泛。一般认为,面向对象的多态存两种形式,一是在运行时的多态,而是编译的多态。但有些书认为编译时多态(函数重载或者运算符重载)不属于多态范畴,因为它不存在动态绑定。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值