【概述】
在之前的课程中,我们看到了不同的内置类。这些类包括Scanner类和String类,以及一些原始数据类型的类,例如Integerand Double,Integer.parseInt(,Double.parseDouble()
【原始类型 Primitive types】
Java中有八大原始数据,为int,byte,short,float,double,Boolean,char和long
当我们声明这些原始类型的变量时,将分配固定大小的内存来保存要存储的值,每种类型分配的固定内存大小是不同的
简而言之,就是
原始数据类型的大小和灵活性都受到限制
【内置类】
数组 Array
数组是一种扩展原始数据类型的强大方法————它使我们可以在单个变量名下收集相同类型的变量,而我们也可以制作任意长度的数组
但即使是数组,它们也只能为我们做什么对应的事情,不能做超出它规则范围的事情
字符串 Strings
字符串是引用类型 reference type的一个例子
声明后,直到初始化的时候,才会给字符串分配内存
字符串类型比数组更强大,因为它可以容纳任何大小的值,字符串提供了可以与"值"交互的方法,如String.length()
这些(Scanner, String, Integer)是Java内置的一些类,我们还可以创建java类来执行特定的用户定义任务
【用户定义类 User Defined Class】
类是一类对象的定义,这些对象都具有相同的行为和相同类型的属性
我们可以把类视作一种模板
我们拿一辆车举例,对所有车辆,它们一般都有:
特定类型的电机、有颜色、有一定数量的门等等
除了拥有属性,每个类还可以执行某些用户自定的任务,比如上述的车:
我们既可以封装汽车的描述,也可以编码与汽车有关的功能
我们可以编写以捕获汽车属性和功能的代码称为类 class
另外,我们也可以使用其他对象作为属性
【类的组成】
1.类的名字 A class name
写法上有约定俗成的:类名应以大写字母开头,并且是一个名词
2.属性,实例变量 Attributes
这些变量会在类的内部用于保存值,另外其他对象也可以作为属性
3.构造函数 Constructor(s)
应该始终有一个默认构造函数。这种类型的构造函数没有输入参数。如果没有提供,JVM将自动提供一个
4.Getters方法(也称为访问器 Accessors)
这些是用户定义的方法,用于返回类中的那些属性值
5.二传手 Setters(也称为突变者 Mutators)
更改类中属性值的方法
6.以方法作为形式的功能
【对象 Object】
对象是类的实例,可以认为它的使用就像任何变量一样
比如我们在使用Scanner类时,可以通过编写以下内容来创建该类的对象
Scanner sc= new Scanner(System.in);
创建完对应的对象之后,我们就可以使用它的功能了,现在我们的程序中有Scanner类的一个实例了
【创建一个Class的例子】
让我们开始看一个代表Car的java类的示例,我们的类,叫做car,将有以下属性:门的数量,车型和颜色,我们可能想要一个名为printCarDetails()的方法来打印出这些属性
于是我们得到了如下这个class
public class Car
{
//Attributes
private int numberOfDoors;
private String colour;
private char motorType; //I = ICE, E = Electric F = fuelcell
private int carReg;
private static int lastCarReg = 1000;
//Constructors
//Default Constructor
public Car()
{
numberOfDoors = 4;
colour = "Black";
motorType = ‘I‘;
lastCarReg++; //increase the value
carReg = lastCarReg; // assign that value to the reg of this Car instance
}
public Car(int numberOfDoors, String colour, char motorType)
{
this.numberOfDoors = numberOfDoors;
this.colour = colour;
this.motorType = motorType;
lastCarReg++;
carReg = lastCarReg;
}
public Car(int doors)
{
numberOfDoors = doors;
colour = "Black";
motorType = ‘I‘;
}
//Getter methods
//get the colour
public String getColour()
{
return colour;
}
public int getDoors()
{
return numberOfDoors;
}
public char getMotorType()
{
return motorType;
}
public int getReg()
{
return carReg;
}
//Setter Methods
public void setDoors(int num)
{
numberOfDoors = num;
}
public void setColour(String col)
{
if(col.equals("Red") || col.equals("Green")){
colour = col;
}
}
//Functionality
public void printCarDetails()
{
String details = "Number of doors: " + numberOfDoors;
details += "\nColour: " + colour;
details += "\nMotor Type: " + motorType;
details += "Car Reg: " + carReg;
System.out.println(details);
}
public String toString()
{
String details = "Number of doors: " + numberOfDoors;
details += "\nColour: " + colour;
details += "\nMotor Type: " + motorType;
details += "Car Reg: " + carReg;
return details;
}
/*
public Car(int numberOfDoors, String colour,char motorType)
{
this.numberOfDoors = numberOfDoors;
this.colour = colour;
this.motorType = motorType;
}
public void setColour(String colour)
{
this.colour = colour;
}
*/
}
注意:在我们的class里面是没有main方法的,在main()方法(在另一个文件中)中,我们就可以像创建Scanner类的对象那样创建Car类的对象
比如:
public class TestCar{
public static void main(String args[]){
//Create a Car instance by calling the default constructor
Car c1 = new Car();
//Create another Car instance by calling our general constructor with 3 parameters
Car c2 = new Car(5,"red",‘E‘);
Car c3 = new Car(16);
//Call printCarDetails method on each car
c1.printCarDetails();
c2.printCarDetails();
c3.printCarDetails();
System.out.println("Colours:");
System.out.println("The colour of Car C1 : " + c1.getColour());
System.out.println("The colour of Car C2 : " + c2.getColour());
System.out.println("The colour of Car C3 : " + c3.getColour());
c1.setColour("Green");
c3.setDoors(4);
c1.printCarDetails();
c3.printCarDetails();
System.out.println(c1.toString());
}
}
【类和对象的命名约定】
1.创建类时,类名应始终以大写字母开头
2.创建类的对象时,对象名称应始终以小写字母开头,随后的任何单词都应以大写字母开头
【Java】6.0 类和对象 Class and Object 01
原文:https://www.cnblogs.com/RetenQ/p/14710733.html