【彻底教会你如何运用类与对象】(promax版)

【彻底教会你如何运用类与对象】(promax版)

一、类与对象的意义(为什么要用类与对象)

众所周知,java是面向对象程序设计(简称oop)语言,是当今主流的程序设计范型。所以要想学习好java语言的话,我们必须得拿下这一章。

那么什么是面向对象程序设计呢?很简单,其实就是拿对应的东西做对应的事

例如:

csharp 复制代码
public class Test {
//创造Scanner对象,用于接受键盘输入的数据
//创造一个Rondom对象,用于生成一个随机1~9的值
public static void main(String[] args) {
    //通过new关键字生成一个Scanner对象,然后将他的地址值赋给sc
        Scanner sc = new Scanner(System.in);
    //通过new关键字生成一个Random对象,然后将他的地址值赋给r
        Random r = new Random();
        int a = sc.nextInt();
        int b = r.nextInt(9)+1;
        System.out.println(a);
        System.out.println(b);
    }
  }

当你看到这里或许就已经解决了你心中的疑问。接下来我们就看看什么是类与对象。

二、类与对象的概念(什么是类与对象)

类是构造对象的模版或蓝图。我们可以将类想象成制作火箭的设计图纸,将对象想象为火箭。在java中,必须要设计类才能获得对象。

如你所见,java编写的所有代码全在类当中,同时标准的java库中也提供了几千个类。但是我们自己也可以设计一个类供用户使用。

arduino 复制代码
public class 类名{
    修饰符 成员变量;
    成员方法;
    构造器;
    代码块;
    内部类;
}
arduino 复制代码
//设计了一个computer类
public class computer{
    //成员变量
     private String brand;     
     private int price;
    //成员方法
     public static void playGame(){
         
     }
}

为了能更快的入门java类与方法,在这里我们只介绍成员变量和方法。关注我 后面我会持续更新(dog)。

看到这你可能会想,这个private是什么意思

他是私有化的意思。(在main函数中不能直接调用)

作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能被访问。

arduino 复制代码
//定义一个类
public class computer{
    //成员变量
     private String brand;     
     private int price;
    //成员方法
     public static void playGame(){
         
     }
}
typescript 复制代码
public class test_4_1 {
    public static void main(String[] args) {
        Computer c = new Computer();
        //代码在这里就会报错 因为这个是在测试类中运行的 不在同一个类
        c.brand = "华为";
        c.price = 5999;
    }
}
​

注意事项

  • 对于private修饰的成员变量,如果需要被其他类使用,我们应该提供相应的操作,比如:

提供"get变量名()"方法,用于获取成员变量的值,方法用public修饰。

提供"set变量名(参数)"方法,用于设置成员变量的值,方法用public修饰。

那么为什么要用private呢?

就要提面向对象的重要特征之一 ----- 封装

2,1---封装

从形式上看,封装只不过是将数据(成员变量)和行为(方法)组合在一个包里,并对对象的使用者隐藏了数据的实现方式。

封装给对象赋予了"黑盒"的性质,这样就提高了代码的复用性和可靠性。

具体怎么封装呢?我们一起来看看。

arduino 复制代码
public class Phone {
    //成员变量
    private String brand;
    private int price;
    private String color;
    //空参的构造方法
    public Phone() {
    }
    //带全部参数的构造方法
    public Phone(String brand, int price, String color) {
        this.brand = brand;
        this.price = price;
        this.color = color;
    }
    //get方法
    public String getBrand() {
        return brand;
    }
    //set方法
    public void setBrand(String brand) {
        this.brand = brand;
    }
    //get方法
    public int getPrice() {
        return price;
    }
    //set方法
    public void setPrice(int price) {
        this.price = price;
    }
    //get方法
    public String getColor() {
        return color;
    }
    //set方法
    public void setColor(String color) {
        this.color = color;
    }
}
​

内容有点多我们慢慢看。

2.2---this关键字

概念:

方法调用者的地址值

typescript 复制代码
public class Phone {
    //成员变量
    private String brand;
    //set方法
    public void setBrand(String brand) {
        this.brand = brand;
    //get方法
    public String getBrand() {
        return brand;
    }
}
typescript 复制代码
//看这段代码时建议连同上段代码一起看 特别是看有没有返回值和有没带入参数
public class PhoneTest {
    public static void main(String[] args) {
        //使用无参构造创建了一个对象。
        Phone p = new Phone();
        //给方法传递了一个数据
        p.setBrand("xiaomi");
        //用b来接受他的返回值
        String b = p.getBrand();
        //打印b
        System.out.println(b);    
    }
}

在这个setBrand方法中我们将"xiaomi"传入,然后在类中把我们传入的brand赋给this.brand

这个this.brand其实就是p(方法调用者的地址值)对象中的brand也就是类中的成员变量。

实际上就是将局部变量的值赋值给了成员变量

注意事项

  • this作用就是区别局部变量和成员变量

2.3---构造方法

概念:

在创建类时给类里的属性进行初始化。如果没有java程序就会默认给我们带一个空参的构造方法(带默认值)。

arduino 复制代码
    //空参的构造方法
    public Phone() {
    }
    //带全部参数的构造方法
    public Phone(String brand, int price, String color) {
        //将局部变量赋值给成员变量
        this.brand = brand;
        this.price = price;
        this.color = color;
    }

注意事项

  • 方法名与类名相同,大小写也要一致。

  • 没有返回值。

  • 创造对象由虚拟机调用,不能手动调用构造方法。

  • 每创造一次对象,就会调用一次构造方法。

  • 构造方法也有重载。

    那么看到这里你应该就能看懂我上面封装的一长段代码了

    其实在Java里我们给封装某一类事物的类叫做javabean类

    例如:

    arduino 复制代码
    //这就是一个描述手机的类
    public class Phone {
        //成员变量
        private String brand;
        private int price;
        private String color;
        //空参的构造方法
        public Phone() {
        }
        //带全部参数的构造方法
        public Phone(String brand, int price, String color) {
            this.brand = brand;
            this.price = price;
            this.color = color;
        }
        //get方法
        public String getBrand() {
            return brand;
        }
        //set方法
        public void setBrand(String brand) {
            this.brand = brand;
        }
        //get方法
        public int getPrice() {
            return price;
        }
        //set方法
        public void setPrice(int price) {
            this.price = price;
        }
        //get方法
        public String getColor() {
            return color;
        }
        //set方法
        public void setColor(String color) {
            this.color = color;
        }
    }
    ​

    注意事项

    • 里面所有的成员变量需私有化。
    • 有空参和带全部参数的构造方法。
    • 每一个变量提供set和get方法

三、类与对象的使用方法(怎么利用类与对象)

例如:

csharp 复制代码
public class PhoneTest {
    public static void main(String[] args) {
        //创造手机的对象
        Phone p = new Phone();
        //设置手机品牌
        p.setBrand("iphone");
        //设置手机颜色
        p.setColor("远峰蓝");
        //设置手机价格
        p.setPrice(19999);
        System.out.println("手机信息:");
        System.out.println("品牌为  "+p.getBrand());
        System.out.println("颜色为  "+p.getColor());
        System.out.println("价格为  "+p.getPrice());
    }
}
​

该代码为手机的一个测试类。即给手机对象的成员变量赋值并把他们打印出来。

一般在项目开发中,我们一般把测试类和javabean类分开,一个类只干一件事。

将这段代码和上段代码能够全部写出,那就说明你已经掌握了类与对象的全部知识了。

这一篇博客到此为止,我们下篇再见。

相关推荐
计算机编程小咖37 分钟前
《基于大数据的农产品交易数据分析与可视化系统》选题不当,毕业答辩可能直接挂科
java·大数据·hadoop·python·数据挖掘·数据分析·spark
艾莉丝努力练剑38 分钟前
【C语言16天强化训练】从基础入门到进阶:Day 7
java·c语言·学习·算法
老华带你飞1 小时前
校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园交友网站
自强的小白2 小时前
学习Java24天
java·学习
Ashlee_code3 小时前
香港券商櫃台系統跨境金融研究
java·python·科技·金融·架构·系统架构·区块链
还梦呦3 小时前
2025年09月计算机二级Java选择题每日一练——第五期
java·开发语言·计算机二级
2501_924890523 小时前
商超场景徘徊识别误报率↓79%!陌讯多模态时序融合算法落地优化
java·大数据·人工智能·深度学习·算法·目标检测·计算机视觉
從南走到北4 小时前
JAVA国际版东郊到家同城按摩服务美容美发私教到店服务系统源码支持Android+IOS+H5
android·java·开发语言·ios·微信·微信小程序·小程序
qianmoq4 小时前
第04章:数字流专题:IntStream让数学计算更简单
java
带只拖鞋去流浪5 小时前
Java集合(Collection、Map、转换)
java