阿药陪你学Java(第六讲:初识面向对象)

第六讲:初识面向对象

Java是一种面向对象的编程语言,它不同于C语言的面向过程,那么面向对象到底是什么呢?

  1. 定义:

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

  1. 举例说明:

例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。

如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

  1. 结论:

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

其实就是两句话,面向对象就是高度实物抽象化、面向过程就是自顶向下的编程!

类与对象

类是对象的蓝图,对象是类的实例。举个例子,将一个人的姓名、性别、身高、会吃、会说、会动等属性和行为提取出来就可以构成一个类;以这个类为蓝图就可以创建一个人,这个人就是一个对象。只要有了类就可以根据这个类创建很多个对象。

类的语法:
class ClassName {
	// 属性
	// 方法
}

通过类创建对象的语法:
ClassName objectName = new ClassName();

示例:
class Person { // 一个Person类
    String name; // 类的name属性
    int age; // 类的age属性
    public void eat() { // 类的eat()方法
        System.out.println("我会吃");
    }
    public void work() { // 类的work()方法
        System.out.println("我会走");
    }
}
public class Demo {
    public static void main(String[] args) {
        Person person = new Person(); // 通过Person类创建了一个person对象
        person.name = "程序员阿药"; // 通过person对象给它的属性赋值
        System.out.println(person.name); // 通过person对象调用它的属性获得值
        person.eat(); // 通过person对象调用它的方法
    }
}

输出:
程序员阿药
我会吃

类的构造函数

每个类都会有构造方法,如果我们自己不写的话,程序会自动帮我们添加一个无参的构造方法

构造方法需要注意:

  1. 构造方法名必须和类名一致。
  2. 没有返回值,也不加void。
  3. 一个类中构造方法可以有多个,但是参数列表不能相同,也就是方法的重载。(后面会介绍什么是方法重载)
示例:
class Person {
    String name;
    int age;
    public Person() {
        System.out.println("无参构造方法");
    }
    public Person(String nameParam, int ageParam) {
        name = nameParam;
        age = ageParam;
        System.out.println("有参构造方法");
    }
}
public class Demo {
    public static void main(String[] args) {
        Person person = new Person(); // 通过无参构造方法创建了一个person对象
        Person person1 = new Person("程序员阿药", 18); // 通过有参构造方法创建了一个person1对象
    }
}

注意:如果我们在类中一个构造方法都没有写,那么程序会自动帮我们加一个无参构造方法;但是一但我们自已写了构造方法,那么程序就不会帮我们加上一个无参构造方法。此时如果通过无参构造方法创建对象就会出错。

示例:
class Person {
    String name;
    int age;
    public Person(String nameParam, int ageParam) {
        name = nameParam;
        age = ageParam;
        System.out.println("有参构造方法");
    }
}
public class Demo {
    public static void main(String[] args) {
        // Person person = new Person(); // 无法通过无参构造方法创建一个person对象
        Person person1 = new Person("程序员阿药", 18); // 通过有参构造方法创建了一个person1对象
    }
}

类的属性和方法

类的每一个对象都有自己的属性和方法,除了用static修饰的属性和方法,这种静态属性、静态方法属于类本身而不属于任何一个对象。(详情后面会介绍)

class Person {
    String name; // 类的每个对象都有的属性
    int age; // 类的每个对象都有的属性
    static String type; // 类专属的属性
    public void eat() {} // 类的每个对象都有的方法
    public int weight() { // 类的每个对象都有的方法(带返回值)
        return 100;
    }
    public static void type() {} // 类专属的方法
}
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值