【彻底教会你如何运用类与对象】(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类分开,一个类只干一件事。
将这段代码和上段代码能够全部写出,那就说明你已经掌握了类与对象的全部知识了。
这一篇博客到此为止,我们下篇再见。