Java面向对象

Java面向对象

1.面向对象概念

面向过程(Procedure Oriented)和面向对象(Object Oriented)都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显的显示出来,出现了面向对象思想并成为目前主流的方式。

C语言是一种典型的面向过程语言,java是一种典型的面向对象语言。

1.1面向过程

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

缺点:没有面向对象易维护、易复用、易扩展。

1.2面向对象

面向对象思维方式是一种更符合人们思考习惯的思想,思维方式将复杂的问题简单化。面向对象把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。宏观上使用面向对象把握,微观处理上仍然是面向过程。

面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情)。

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。

缺点:性能比面向过程低。

1.3面向对象举例

如何开汽车?

—面向过程分析 —面向对象分析

​ 1.踩离合 * 驾驶员

​ 2.挂挡 * 汽车

​ 3.踩油门,放离合 * 驾驶员开汽车

​ 4.车开了 car.start();

如何修建房子?

—面向过程分析 —面向对象分析

​ 1.设计房子 * 设计师

​ – 修建几层楼,几间卧室等 – 负责房屋设计

​ 2.购买材料 * 采购员

​ – 建筑材料、装修材料等 – 负责材料购买

​ 3.修建毛坯房 * 建筑工人

​ – 憨实地基,修建房屋等 – 负责房屋建设

​ 4.房屋装修 * 装修工人

​ – 卫生间先防水后贴地板等 – 负责房屋装修

​ 5.入住 * 入住

2.类和对象

java是一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言中有类和对象的概念,它们在概念上有什么区别呢?

2.1对象(object)

从编程的设计来说:万物皆对象。

从另一角度的来说,现实生活中任何具体的事物都可以认为是一个对象

例如:一张桌子是一个对象,一张床是一个对象,一台电脑是一个对象,一本书是一个对象,一个人是一个对象,一个杯子是一个对象。

2.2类(class)

从编程的设计来说:现实中一类事物抽象,抽象就是提取这一类事物共有的属性和行为

例如:班级的每一个同学都是一个对象,都具备姓名、年龄、学号等属性,也具备吃饭、睡觉、学习等行为,那么我就可以把班上的同学抽象为学生(Student)类。

反过来我们可以把类看做是一个模版,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造?类就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。

2.3类与对象的关系

对象是类的实例,类是对象的模板。

类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、行为。

3.面向对象编程

3.1类的定义

在java中,我们可以用关键字class来定义一个类,一个java文件可以同时定义多个class。

【示例】类的创建方式

// 定义一个Person类
class Person {
	
}
// 定义一个Dog类
class Dog {
	
}
// 每一个源文件必须有且只有一个public class,并且类名和文件名保持一致!
public class ObjectDemo {

}

上面的类定义好后,没有任何的其他信息,就跟我们拿到一张张图纸,但是纸上没有任何信息,这是一个空类,没有任何实际意义。所以,我们需要定义类的具体信息。

类的组成:

​ 属性 field,定义格式: [修饰符] 属性类型 属性名 = ** [默认值] ;**

​ 方法(行为) method,定义格式: [修饰符] 返回值类型 方法名 (形参列表) {}

以下Student类中的属性也称为成员变量,Student类中的方法称之为成员方法。

【示例】创建一个学生类,并添加类的成员变量和成员方法

public class Student {
	// 属性,此处也称为成员变量
	String name; // 姓名
	int age; // 年龄
	// 方法,此处也称为成员方法
	void eat(String food) {
		System.out.println(name + "在吃" + food);
	}
	void study() {
		System.out.println(name + "年龄" + age + "岁,在学习java");
	}
}

注意: 成员变量定义在类中,整个类中的成员方法都可以访问;

3.2创建对象

在java中,对象也叫做object或instance(实例),所以也称为实例对象。

要想创建一个对象,那么必须先有一个类,然后通过new关键字来创建一个对象。

语法格式:类名称 对象名称 = new 类名称();

【示例】通过Student类(模板),创造出两个学生对象(具体实例)

// 测试类
public class ObjectTest {
	public static void main(String[] args) {
		// 实例化小明学生对象
		Student stu1 = new Student();
		// 成员变量赋值
		stu1.name = "小明"; // 设置名字
		stu1.age = 18; // 设置年龄
		System.out.println("name:" + stu1.name + " age:" + stu1.age);
		// 调用成员方法
		stu1.eat("小龙虾"); // 调用吃放方法
		stu1.study(); // 调用学习方法

		// 实例化小花学生对象
		Student stu2 = new Student();
		// 操作成员变量
		stu2.name = "小花"; // 设置名字
		stu2.age = 17; // 设置年龄
		System.out.println("name:" + stu2.name + " age:" + stu2.age);
		// 调用成员方法
		stu2.eat("冰淇淋"); // 调用吃放方法
		stu2.study(); // 调用学习方法
	}
}

注意事项:

1、成员变量隶属于于对象,只能通过对象来调用,我们可以通过 对象.成员变量 来操作成员变量。

2、成员方法隶属于于对象,只能通过对象来调用,我们可以通过对象.成员方法(实参列表) 来调用成员方法。

3.3成员变量默认值

我们可以在类中对成员变量显示初始化,也可以在创建对象成功后,通过 对象.成员变量 来设置成员变量值。如果以上两种操作都不做,java虚拟机会使用默认的值对其初始化。

成员变量的默认值
整型 0
浮点型 0.0
字符型 ‘\u0000’
布尔值 false
引用类型 null

【示例】蛋糕师制作蛋糕

public class Main {

    public static void main(String[] args) {
        CakeMaker cakeMaker = new CakeMaker();
        cakeMaker.name = "拉提娜";
        Cake cakes = cakeMaker.cake("蓝色妖姬翻糖蛋糕", 32, "无价","你是我最深的爱恋");
        cakes.info(cakeMaker.name);
        System.out.println("            --"+"迪尔"+" "+"预订");
    }
}
class Cake{
    String cakeName;
    int size;
    String price;
    String moral;

    public void info(String str){
        System.out.println("蛋糕师:" + str);
        System.out.println(size + "寸    " + cakeName);
        System.out.println("价格:" + price);
        System.out.println("寓意:"+moral);
    }
}
class CakeMaker{
    String name;
    public Cake cake(String cakeName,int size,String price,String moral){
        Cake cakes = new Cake();
        cakes.cakeName = cakeName;
        cakes.size = size;
        cakes.price = price;
        cakes.moral = moral;
        return cakes;
    }
}

你可能感兴趣的:(Java)