Java面向对象基础(1)

1.认识类与对象

要学习面向对象,就要先去了解类。类是什么?我们可以这样说,类(用关键字class修饰)是描述一类事物的名词,这一类事物具有相同的元素,使得一提到这个名词脑海里就会由这个事物的形象。例如:手机,电脑等。事物本身具有的元素就叫做事物的属性(即类的属性),而这个事物能用来做什么就是事物的行为(即类的方法)。

在下面我简单的定义了一个手机类,它具有处理器、电池和显示屏三个属性,以及一个打游戏的行为。

public class Phone {
    String processor;//处理器(Phone类的一个属性)
    String battery;//电池(Phone类的一个属性)
    String display;//显示屏(Phone类的一个属性)
    
    //Phone类的行为(即是Phone可以用来干什么)
    public void playGame(){
        System.out.println("打游戏");
    }
}

了解了类之后,就要认识对象了。对象与类的关系是一种从属的关系,对象是类的一个实例化。简单地说,就是给这个类确定的值,让他不再是一个抽象的概念,而变成具体的。例如:你有一个手机,我也有一个手机,但是他们不是相同的。

public static void main(String[] args) {
    //创建一个名为phone的Phone类的对象
    Phone phone1 = new Phone();
    //为刚刚创建的对象的各个属性进行赋值
    phone1.processor = "晓龙888";
    phone1.battery = "4500mAh";
    phone1.display = "曲面屏";
    //用刚刚创建的方法去调用打游戏的方法
    phone1.playGame();//输出-->打游戏
}

2.方法

方法简单的说就是解决某一个问题的所有步骤。

方法的定义:
访问修饰符  返回值类型 方法名(形参){
    //方法体
    //如果返回值的类型不是void,那么就要返回方法定义时规定返回的类型
}

//定义一个无返回值,需要传入两个参数,用于求和的方法(方法名为add)
public void add(int num1,int num2){
    //将传入的两个数的和打印在控制台
    System.out.println(num1+"+"+num2+"="+(num1+num2));
}

//定义一个有返回值,需要传入两个参数的求和方法
public int add(int num1,int num2){
    //将传入的两个数的和进行返回
    return num1+num2;//返回的值应该用变量去接收或直接使用,否则没有意义
}

按照返回值的类型来分,可以将方法分为有返回值方法和无返回值方法。

而按照是否需要参数来分,也可以分为需要参数的方法和无需参数的方法

public static void main(String[] args) {
        outPut();//输出:这是一个无返回值的方法
        int num = Random();//定义一个变量来接收返回的数据
        System.out.println(num);//输出随机产生的数值
        boolean flag1 = isEvenNumber(4);//定义一个变量来接收返回的数据
        System.out.println(flag1);//输出true
        boolean flag2 = isEvenNumber(5);//定义一个变量来接收返回的数据
        System.out.println(flag2);//输出false

    }

    //定义一个无返回值的方法(不需要参数)
    public static void outPut() {
        System.out.println("这是一个无返回值的方法");
    }

    //定义一个有返回值的方法(不需要参数)
    public static int Random() {
        int num = new Random().nextInt(10);//随机生成一个0~9之间的数字
        return num;//将随机生成的数字进行返回(返回值的类型必须与定义方法时确定返回的数据类型相同)
    }

    //定义一个判断一个数是否是偶数的方法(需要传入参数)
    public static boolean isEvenNumber(int i) {
        //boolean为确定返回的数据类型为boolean
        //()里的是int i形式参数(形参)
        if (i % 2 == 0) {
            return true;//返回true
        } else {
            return false;//返回false
        }
    }

运行结果如下

在这里插入图片描述

方法的重载

方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。(判断两个或多个方法是否重载,是不考虑访问修饰符和返回值类型的)

public class Calculator {
    //需要2个参数为int类型数据的方法
    public int add(int a, int b) {
        System.out.println("需要2个int类型数据的方法");
        return a + b;
    }

    //需要3个参数为int类型数据的方法
    public int add(int a, int b, int c) {
        System.out.println("需要3个int类型数据的方法");
        return a + b + c;
    }

    //需要3个参数为double类型数据的方法
    public double add(double a, double b, double c) {
        System.out.println("需要3个double类型数据的方法");
        return a + b + c;
    }

    public static void main(String[] args) {
        Calculator c = new Calculator();//创建Calculator的对象
        int num1 = c.add(5, 7);//定义一个变量来接收add方法返回的数据(也可以像下面一样直接输出)
        System.out.println(num1);//输出12
        System.out.println(c.add(12, 12, 12));//输出36
        System.out.println(c.add(2.3, 4.7, 3.9));//输出10.9
    }
}

运行结果如下
在这里插入图片描述

3.构造方法

构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及对象的初始化。也就是说:构造方法是用来创建对象,并且同时给对象的属性赋值。

每一个类都有一个系统默认的无参构造方法,但是一旦你写了一个有参的构造方法,那么就不会在给你提供这个默认的无参构造方法了。所以,如果你写了有参构造,那么一定要将无参构造方法同时给写上去。

构造方法定义格式:

访问修饰符 构造方法名(形式参数列表){
    //构造方法体
    //通常在构造方法体中给属性进行赋值,完成属性的初始化
}

//下面定义一个学生类,里面写了无参构造和有参构造
public class Student {
    String name;//姓名属性
    String gender;//性别属性
    int age;//年龄属性

    //无参构造
    public Student() {
    }
    //有参构造
    public Student(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }
}

4.成员变量和局部变量

成员变量定义在类中方法外,它的作用域是整个类。而局部变量则是定义在方法、代码块中或者是方法的参数列表中(方法声明时),它的作用域就是当前的结构体。

public class Student {
    String name;//成员变量
    String gender;//成员变量
    int age;//成员变量

    //无参构造
    public Student() {
    }
    //有参构造
    public Student(String name, String gender, int age) {
        //方法的参数列表里的变量就是局部变量
        
        //如果局部变量和成员变量同名,那么程序就会遵循就近原则,去找局部变量
        //而要改变变量指向就要给它加上this关键字,这样它才能指向成员变量
        this.name = name;//等号右边的name就是局部变量
        this.gender = gender;//等号右边的gender就是局部变量
        this.age = age;//等号右边的age就是局部变量
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值