Java—面向对象(1)

Java—面向对象(1)

1.面向过程和面向对象

1.什么是面向过程和面向对象

程序设计方法一般分为两大类:面向过程的设计方法和面向对象的设计方法。

面向过程:面向过程程序设计方法就是先分析出解决问题所需要的步骤,然后按照步骤依次去执行。

**面向对象:**面向对象程序设计方法是把构成问题的事务分解成各个对象,对象来描述在解决整个问题中的步骤的一些行为和属性。

例如:学生课表为:数学,语文,英语 现在要解决给学生上课的问题:

面向过程设计:**1.上课铃 2.数学老师讲数学课 3.下课铃 4.上课铃 5.语文老师讲语文课 6.下课铃 7.上课铃 8.英语老师讲英语课 9.下课铃 **

面向对象设计在面向过程的基础上我们可以将整个过程分为:1.教师(每个老师为一个对象,每个对象都有讲课这个讲课这个行为)2.课程控制(上下课铃控制课程的开始和结束)。

2.面向过程和面向对象的差异

​ 通过这个例子可以看到面向过程就是自上而下的按照步骤编程,面向对象是实物高度抽象化,将复杂的问题简单化,更注重的是功能而不是过程步骤,面向过程中更多的体现的是执行者,面向对象中更多的体现是指挥者。

2.面向对象的特点

对象:对象就是现实世界存在的任何事务都可以称之为对象,有着自己独特的个性,对象一般都由属性+方法组成。

属性:用来描述具体某个对象的特征。比如张三身高180M,体重70KG,身高、体重都是属性。

方法:用来描述具体某个对象的行为和功能。比如张三讲话、能开车就是其行为和功能。

:具有同种属性的对象称为类,是个抽象的概念。比如“人”就是一类,期中有一些人名,比如张三、李四、老王等等这些都是对象,类就相当于一个模具,他定义了它所包含的全体对象的公共特征和功能,对象就是类的一个实例化,小明就是人类的一个实例化。

面向对象具有三大特性:封装、继承、多态

3.面向对象的简单实现

1.类和对象的创建

对象是类的实例化,在创建一个对象前就必须先有一个所属的类。Java中类使用关键字class

普通类的定义模式:访问控制符 修饰符 class 类名 {

​ 访问控制符 修饰符 成员变量;

​ …

​ 访问控制符 修饰符 成员方法(){};

​ …

​ }

1.访问控制符和修饰符

类的访问控制符:public 和默认(什么都不写)

控制符 说明
public 所有类都可以访问,一个Java文件中只能有一个public类且类名要和文件名保持一致
默认 只有在同一个包里的类才能访问

类的修饰符

修饰符 说明
final 该类不能被继承,只有该类本身的实例对象才能访问类中的内容
abstract 抽象类,类中可以有非抽象方法,子类必须实例化该类的抽象方法,只能通过子类访问该类的内容

成员变量的访问控制符

控制符 说明
public 所有类都可以访问
protected 同包的类及其子类可以访问,不同包的子类也可以访问
默认 同包的类可以访问
private 只有当前的类可以访问

成员变量的修饰符

修饰符 说明
final 该变量在第一次赋值之后不能再次修改,值保持不变
static 该变量属于该类所用实例,所有实例共用一个该变量

方法的访问控制符

控制符 说明
public 所有类都可以访问
protected 同包的类及其子类可以访问,不同包的子类也可以访问
默认 同包的类可以访问
private 只有当前类的对象可以访问

方法的修饰符

修饰符 说明
final 该方法不能被覆盖
static 该方法属于类,可以直接通过类名调用
abstract 抽象方法,在该类必须空实现,被非抽象子类实现,不能与 final和static同时使用

2.类和对象的实例

例:创建一个Person类

public class Person {
    public String name;//姓名
    private String sex;//性别
    private int age;//年龄
    //打招呼的行为方法
    public void sayHello(){
        System.out.println(name+":Hello");
    }
}

实例化类创建对象:通过关键字new创建对象

对象的创建模式:类 对象名 =new 类的构造方法

创建对象名字为 张三 电泳打招呼方法:

public class text{
    public static void main(String[] args) {
        Person p=new Person();
        p.name="张三";
        p.sayHello();
    }
}

运行结果:

在这里插入图片描述

3.创建对象时内存分配

上述代码通过Person p=new Person();代码创建了一个对象,通过p.name="张三";代码为属性name赋值。

在这里插入图片描述

在执行Person p=new Person();时,jvm会在堆中开辟一段空间供对象使用,并同时给对象的属性初始化;将开辟的空间的起始地址传给变量p;执行p.name="张三"时,将name的值修改修改为“张三”。

4.面向过程和面向对象的优缺点

面向过程

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。
缺点:代码执行时相互影响,耦合度较高,没有面向对象易维护、易复用、易扩展

面向对象

优点:复杂问题简单化,代码易维护、易复用、易扩展,由于有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低

猜你喜欢

转载自blog.csdn.net/m0_49297152/article/details/107411804