Java基础(六):面向对象1

方法的重载(overload)

重载:一个类中可以定义多个名称相同,但参数列表不同的方法;

构成方法重载的条件:

  1. 不同的含义:形参类型、形参个数、形参顺序不同;
  2. 只有返回值不同不构成方法的重载;
    如:int a(Sting str){} 与 void a(String str){} 不构成方法重载
  3. 只有形参的名称不同,不构成方法的重载;
    如:int a(String str){} 与 int a(String s){}不构成方法重载
public class TestOverload {
    public static void main(String[] args) {
        // add() add(12) 形参不同可以被重载
        add();
        add(12);
        // 形参数量不同可以被重载
        add();
        add(1);
        add(1, 2);
        // 形参类型不同可以重载
        add(1);
        add(3.2);
        // 形参顺序不同可以重载
        add(1, 'a');
        add('a', 1);

        // add(1000); // 如果放开形成是b的方法就报错,形参不同,不能被重载
    }

    // 正确重载
    static void add() {}
    static void add (int a){}
    static void add (int a, double b){}
    static void add (double a){}
    static void add (int a, char b){}
    static void add (char a, int b){}

    // 错误重载
    // static void add(int b){}

    // 返回值不同,也是不能被重载
    // static int add(int a, int b){};
    // static void add(int a, int b){};
}

面向对象编程

已制造汽车为例。为了协作,我们找轮胎厂完成制造轮胎的步骤,发动机厂完成制造发动机的步骤;这样,发现大家可以同时进行车的制造,最终进行组装,大大提升效率。但是,具体到轮胎厂的一个流水线操作,仍然是有步骤的,还是离不开执行者、离不开面向过程思维;

因此,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。但是,具体实现部分的微观操作(就是一个个方法),仍然需要面向过程的思维去处理。

千万不要把面向过程和面向对象独立起来。两者是相辅相成。面型对象离不开面向过程。

  • 面向对象和面向过程的思想总结:
    • 都是解决问题的思维方式,都是代码组织的方式。
    • 面向过程是一种"执行者思维",解决简单问题可以使用面向过程
    • 面向对象是一种"设计者思维",解决复杂、需要协作的问题可以使用面向对象
    • 面向对象离不开面向过程
      • 宏观上:通过面向对象进行整体设计
      • 微观上:通过面向过程进行执行和数据处理

面向对象是一种 “设计思维”。设计时,先从问题中找名词。然后确定这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的关系。

设计一款企业软件,我们需要进行面向对象分析。写一首诗、一篇文章、一篇小说也需要进行面向对象分析。

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

类:叫class。
对象:是Object.instance(实例)。以后我们收的某个类的对象,某个类的实例。是一样的意思。

// 每一个源文件必须有且只有一个public class, 并且类名和文件名保持一致!
public class Car{

}

class Type { // 一个java文件可以同时定义多个class

}

class Engine {

}

class Seat {

}

对于一个类来说,有三种成员:属性fied、方法method、构造器constructor。

属性(field 成员变量)

属性用于定义该类或者该类包含的数据或者说静态特征。属性作用范围是整个类体。在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。

数据类型默认值说明
整型0int类型
双精度浮点型0.0ddouble类型
字符型‘\u0000’char类型
布尔型falseboolean类型
引用类型null类、接口、数组等

属性定义格式

[修饰符] 属性类型 属性名 = [默认值]

方法

方法用于定义该类或者该类示例的行为特征和功能实现。方法是类和对象行为特征的抽象。面向对象中,整个程序的基本单位是类,方法是从属类和对象的。

[修饰符] 方法返回值类型 方法名(形参列表){
// n 条语句
}

public class SstStu {
    int id;
    int age;
    String sname;

    public void study(){
        System.out.println("正在学习,不好打扰");
    }

    public void kickBall () {
        System.out.println("正在踢球,正在挥汗!");
    }

    public static void main(String[] args) {
        SstStu sst = new SstStu();
        System.out.println(sst.id);
        System.out.println(sst.sname);
        sst.id = 1001;
        sst.sname = "ckk";

        System.out.println(sst.id);
        System.out.println(sst.sname);

        sst.kickBall();
        sst.study();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值