Java基础(九)——面向对象初识(类与对象、方法)

一.类与对象

1. 什么是类和对象

类:
官方语言:拥有相等功能和相同的属性的对象的集合 – 抽象的
举例:人类、动物类、鸟类
对象:
就是类的实例 – 具体
举例:动物的的实例------猫、狗、猪

2.取类名的注意点

类名与变量名类似,需要注意的是,类中的成员如果是static修饰的,那么不能访问非static修饰的

3.面向过程和面向对象的区别

面向过程是考虑“怎么”做,面向对象是考虑“谁”来做
举个栗子: 将大象装进冰箱
面向过程:打开冰箱—将大象装进去–关上冰箱门这样一种过程
面向对象:重点在对象:人—将大象—放进冰箱

4.Person类实例

/*Person类*/
public class Person {
    // 类中没有自己定义构造器,系统会自行提供一个默认的构造器

    // 成员变量(属性)
    String name;
    int age;
    boolean sex;
    private int height;

    // 成员方法:无参、有参 (方法)
    public void eat(){
        System.out.println("吃饭");
    }
    public void eat(String food){
        System.out.println("吃"+food);
    }


    public void setHeight(int height){
        this.height = height;
    }

    public int getHeight(){
        return height;
    }

}

/*Person类-main方法*/
public class PersonTest {
    public static void main(String[] args) {
        Person person = new Person();
        person.name = "gogo";
        System.out.println(person.name);
        person.age = 20;
        System.out.println(person.age);
        person.sex = false;
        System.out.println(person.sex);
        // 由于Person的height属性被private修饰了,需要getXXX、setXXX方法才能调用
        person.setHeight(111);
        System.out.println(person.getHeight());
        person.eat();
        person.eat("水果");

    }
}

5.对象的内存解析

Person p1 = new Person();
p1.name = "tom";
p1.isMale = "true";
Person p2 = new Person();
System.out.println(p2.name);
Person p3 = p1;
p3.age = 10;

在这里插入图片描述

6.属性与局部变量的对比

不同点:

  1. 位置不同
    属性(成员变量)-- 直接声明在类的{ }内
    局部变量 – 声明在方法、代码块、方法形参、构造器形参构造器内部
  2. 权限修饰符不同
    属性可以被public、static、private等修饰符修饰
    局部变量不可以被修饰
  3. 默认初始化值不同
    属性有默认初始化值
    成员变量无默认初始化值,一定要先进行初始化
  4. 加载位置不同
    属性(非static)(加载到堆空间中)
    局部变量(加载到栈内存当中)

二.类与方法

1.方法的声明

权限修饰符 返回值类型 方法名(形参){
   方法体
}

public void eat(String food){
	System.out.println("jame吃"+food);
}

方法内部还可以调用方法,但方法内不可再声明方法。

2. 权限修饰符

权限修饰符有:

public:可以在任何类中都能被访问
private:私有的,即只能在当前类中被访问
protected:受保护的,只能被位于同一package中的所有类访问
default/缺省/friendly:同一package中的所有类都能访问

3.方法按返回值类型分类

可以分为:有返回值/无返回值
有返回值的方法,在声明方法时,需要指定方法的数据类型,需要有返回值

4.return关键字的使用

  • return的使用范围:方法的内部使用
  • return的作用
    1.从当前的方法中退出,返回到该调用的方法的语句处,继续执行
    2.返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致
  • 注:return的后面其他语句不再生效

三.对象数组练习

题目要求:定义类Student,包含三个属性,学号num,年级state,成绩score
创建20个学生对象,学号为1到20,年级和成绩都由随机数确定
打印出3年级的学生信息

Student类:

/*
 * Student类
 */
public class Student {
    int number;
    int state;
    int score;

    public void info_3(){
        System.out.println("学号"+number+"\t"+state+"年级\t"+"分数:"+score);
    }
}

主方法:

package com.stx.sn.myobject.person.array;

/**
 * author: yiaiming
 * Date: 2020/9/17
 * Time: 11:21
 * \
 */
public class Main {
    public static void main(String[] args) {
        Student[] stus = new Student[20];
        for (int i = 0; i < stus.length; i++) {
            stus[i] = new Student();
            stus[i].number = i;
            /*static double random()
            返回值为 double值为正号,大于等于 0.0 ,小于 1.0 。
              如要产生[5-15]的随机数:
            int a =(int)(Math.random()*(15-5+1)+5)*/
            stus[i].state = (int) (Math.random() * (9 - 1 + 1) + 1);
            stus[i].score = (int) (Math.random() * (100 - 50 + 1) + 50);

            if (stus[i].state == 3) {

                stus[i].info_3();
            }
        }


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值