Java学习之面向对象篇
0X00 前言
前面讲了java的一些基本语法,这里就来讲讲java的核心思想,面向对象。@H_403_5@
0X01 面向对象概念
Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,
使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面
向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算
机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去
操作实现。@H_403_5@
从某度搬运过来的一段描述。@H_403_5@
那么我们再来讲讲面向对象和面向过程的区别。@H_403_5@
面向过程:@H_403_5@
特性:模块化 流程化
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;
比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开 发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象:@H_403_5@
概念
面向对象是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的系统一一对应。
特性:抽象 封装 继承 多态
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
缺点:性能比面向过程低
面向对象编程的特点:封装、多态、继承。@H_403_5@
0x02 类的编写
在编写类之前,首先要了解一下几个概念。@H_403_5@
行为:就是该事物能够做什么。@H_403_5@
类和对象的关系是紧密相连的,类是对一类事物的描述,是抽象的。
对象是一类事物的实例,是具体的。
类是对象的模板,对象是类的实体。就像是一个是设计图纸,一个是设计的成品。@H_403_5@
那么接下来,来看看类的定义格式@H_403_5@
public class ClassName {
//成员变量
//成员方法
}
public class Student {
int age = 18;
String name = "小明";
public void eat(){
System.out.println("name:"+name+"age:"+age+"eat");
}
}
这样就定义了一个类,但是要使用的话,要对他进行实例化。@H_403_5@
新建一个文件,main方法里面对他进行实例化。@H_403_5@
public static void main(String[] args) {
Student xiaoming = new Student();
System.out.println("age:"+xiaoming.age);
System.out.println("name:"+xiaoming.name);
xiaoming.eat();
}
0x03 封装
封装概述:@H_403_5@
面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。
封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的
方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。@H_403_5@
将属性隐藏起来,要是访问某个属性,提供公共方法对其访问。@H_403_5@
步骤:使用private关键字修饰成员变量。@H_403_5@
对需要访问的成员变量提供对应的get、set方法。@H_403_5@
这样能有效的增强代码的安全性,间接对数据进行访问和修改。@H_403_5@
private的作用
- private是一个权限修饰符,代表最小权限。
- 可以修饰成员变量和成员方法。
- 被private修饰后的成员变量和成员方法,只在本类中才能访问。
private格式:@H_403_5@
private 数据类型 变量名;@H_403_5@
public class Student {
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
0x04 结尾
面向对象的基础就目前就写了这些,但这些只是里面的小部分,后面会继续更新java的多态和继承。@H_403_5@