一、C语言
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。
###发展
之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。
1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
1973年贝尔实验室的D.M.Ritchie 在B语言的基础上设计出了C语言,对B取长补短,并用之改写了原来用汇编编写的UNIX,(即UNIX第5版),但仅在贝尔实验室使用。
1978年影响深远的名著《The C Programming Language》由 Brian W.Kernighan和Dennis M.Ritchie 合著,被称为标准C。
###时间线
| 语言 | 时间 | 地点 |主要人物 |
| ------------- |:-------------? -----?
| BCPL语言| 1967年 | 英国剑桥大学 | Martin Richards|
|B语言|1970年|美国AT&T贝尔实验室|Ken Thompson|
|C语言 | 1972~1973年 | 美国贝尔实验室 | D. M. Ritchie|
###特点:
易于学习
具有结构化的控制语句 ,是完全模块化和结构化的语言
语言简洁、紧凑,使用方便、灵活。 32个关键字、9种控制语句,程序形式自由
目标代码质量高,程序执行效率高。只比汇编程序生成的目标代码效率低10%-20%。
可以处理底层的活动
可在多种计算机平台上进行编译,程序可移植性好(与汇编语言比。
运算符丰富。有34种运算符
语法限制不太严格,程序设计自由度大
允许直接访问物理地址,能进行位操作
二、C++
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。 C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
特点:
-
支持数据封装和数据隐藏
在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。
-
支持继承和重用
在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员
-
支持多态性
采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。当一个消息被这个树中一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态性的这一特性允许使用高级抽象。继承性和多态性的组合,可以轻易地生成一系列虽然类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征。由于多态性,一个对象可有独特的表现方式,而另一个对象有另一种表现方式。
三、Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 [1] 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 [2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
特点:
1、封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
一般来说经常接触封装就是类的封装,方法的封装等。比如:来个例子看看;
public class People
{
//其中姓名,年龄都是私有属性,外部只能通过get方法访问
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
再来看个方法的封装:
//打印一个人name
public void showName() {
//相应的实现
People people = new People();
String name = people.getName();
System.out.println(name);
}
public static void main(String[] args)
{
showName();
}
2、继承
继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。 Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
class A{
//成员变量name
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void showName(){
System.out.println(name);
}
}
//B继承A
class B extends A{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void showAge(){
System.out.println(age);
}
}
public static void main(String[] args)
{
A a = new A();
B b = new B();
//调用B类show年龄的方法
b.showAge();
//因为B继承了A,B也有A的name属性,也能调用A的方法。
b.showName();
}
3、多态
按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作
多态的话,我觉得是更好的利用了继承这一特性,然后为什么能实现多态,因为可以重写父类的方法。说重写可能不清楚,具体来说就是子类父类可以存在分别存在名字相同的属性或者方法,然后可视声明的类去调用相应的方法等。
class B extends A{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void showAge(){
System.out.println(age);
}
public void showName(){
//显示姓名年龄
//这里的super.name是调用父类的name
System.out.println(super.name+age);
}
}
public static void main(String[] args)
{
A a = new A();
B b = new B();
//调用B类show年龄的方法
b.showAge();
//调用的是A类自己显示名字的方法
a.showName();
//因为B重写了A的showName()方法,显示的就是姓名加年龄
b.showName();
}
4、抽象
抽象是通过分析与综合的途径,运用概念在人脑中再现对象的质和本质的方法,我觉得理解成一种方法比较好。就是我们通过对事物的认知,将某一或者一类事物的属性变化成JAVA语言能识别的类(你可以把一个基础的类看成一个事物,这个类的属性就等于这个事物的的属性)。
举个例子吧,比如我现在要做一个人员作主体的系统,那么我需要把现实生活的人抽象成一个基础的实体类功能程序识别,我会声明一个people的类,这个类包含了name(名字),age(年龄),sn(身份证),sex(性别),height (身高),等等属性,这些属性基本都是我们现实生活中都有的标签。类抽象好了,就是封装,继承,根据业务进行相应功能逻辑实现。
以上的代码演示均为完结,只是粗略的介绍一下,让大家明白这些特性!!!