学习目录
面向对象的初步认识
Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),在面向对象的世界里,一切皆为对象
面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情
面向对象和面向过程
面向过程:分析出解决问题所需要的步骤,然后把这些步骤一步一步实现,运行时按照这些步骤就可以了
例如:洗衣服
洗衣服需要 盆子、洗衣粉、水、衣服等等,这些需要一步一步去做
面向过程注重的是洗衣服的过程,少了一个环节都不行
按照该种方式来写代码,将来扩展或者维护起来会比较麻烦
面向对象:是把解决问题需要的步骤分解成各个对象,对象是为了描叙某个事物在整个解决问题的步骤中的行为
例如:
洗衣服过程可以分为四个对象:人、衣服、洗衣粉、洗衣机
整个洗衣服过程是人将衣服放到洗衣机,放入洗衣粉,启动洗衣机,洗衣机会自动的完成洗衣服的过程
不需要关注洗衣服的过程,过程都通过对象之间的交互
来完成的
总结
-
面向过程:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源
比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素
缺点:没有面向对象易维护、易复用、易扩展 -
面向对象
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性
可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低
简单的认识类
面相对象程序设计关注的是对象
,而对象是现实生活中的实体,比如:摩托车
但是摩托车计算机并不认识,需要开发人员告诉给计算机什么是摩托车
而对象是用类来进行描述的
,主要描述该实体(对象)具有哪些属性
(外观尺寸等),哪些功能
(用来干啥),描述完成后计算机就可以识别了
例如:
用类来描述现实中的一辆摩托车
属性
:长宽高、颜色、座高
功能
:上班代步
上面是简单的对摩托车的简单描述,这个过程是为摩托车(对象)进行抽象( 对一个复杂事物的重新认知)
但是这些数值并不能让计算机识别出来,这就需要程序员用编程语言来进行描述 。 例如:Java 语言
类定义的格式
在java中定义类时需要用到class
关键字,具体语法如下:
类似于C语言的结构体
//创建类 Motorcycle(摩托车)
class Motorcycle {
// 下面是定义属性(字段) 或者叫 成员变量
public String brand; // 品牌
public String type; // 型号
public String color; // 颜色
// 下面是定义 行为(功能) 或者 成员方法
public void Motorc () {
System.out.println("上班代步");
}
}
class
为定义类的关键字,Motorcycle
为类的名字,{ }
中为类的主体- 类中包含的内容称为类的成员
属性:主要是用来描述类的,称之为类的成员属性或者类成员变量
方法:主要说明类具有哪些功能,称为类的成员方法
用Java语言将 摩托车类 在计算机中定义完成,经过javac编译之后形成.class文件
在JVM的基础上计算机就可以识别了
- 注意:
类
名写成大驼峰
,方法名
写成小驼峰
一般一个文件
当中只定义一个类
main
方法所在的类一般要使用public
修饰(注意:Eclipse默认会在public修饰的类中找main方法)
public
修饰的类必须要和文件名相同
成员前写法统一为 public
,后面会详细解释
此处写的方法不带static
关键字. 后面会详细解释
类的实例化
定义了一个类
,就相当于在计算机中定义了一种新的类型
,与int,double类似
只不过 int
和 double
是java语言自带的内置类型
,而类是用户自定义了一个新的类型,
比如上述的:Motorcycle
类
类(一种新定义的类型)有了这些自定义的类型之后就可以使用这些类来定义实例(或者称为对象)
用类创建的类型创建对象的过程,称为类的实例化
在java中采用new关键字,配合类名来实例化对象
例如:
使用类来定义一辆 摩托车
//创建类 Motorcycle
class Motorcycle {
// 下面是定义属性(字段) 或者叫 成员变量
public String brand; // 品牌
public String type; // 型号
public String color; // 颜色
// 下面是定义 行为(功能) 或者 成员方法
public void motorc () {
System.out.println("上班代步");
}
}
public class Test {
public static void main(String[] args) {
// 实例化Motorcycle
Motorcycle n = new Motorcycle();
n.brand = "春风"; // 品牌
n.type = "春风886";// 型号
n.color = "天蓝色";// 颜色
n.motorc();
}
结果:春风886上班代步
使用类来定义一个 狗
class Dog{
public String name;
public