java类的结构
类是什么
类是一个模板,它描述一类事物的属性和行为的集合
类是表示一个客观世界某类群体的基本特征的抽象
说人话就是,类就是对同一类事物(具体存在的)共有属性的,行为的定义,类是一个模板,根据某个类来创建这个类的具体实例(对象)。
类的结构
java类的结构可以分为:
1、成员变量:事物属性的描述
2、方法:事物的行为
3、构造方法:用于创建对象
4、内部类:即在类体中声明类
5、块:一段没有名称的代码块
成员变量(类的属性)
成员变量。也就是类的属性
[修饰符] 类型 变量名 = [值]
public class Car {
//以下都是类的属性(成员变量)
String name;
String color;
float price;
}
从数据类型角度分:
基本数据变量: byte short int long float double char boolean
应用数据变量:类 、数组、接口…
在这我们主要说在类中以位置划分到:成员变量和局部变量
成员变量
1、成员变量直接被类包含,就在类中直接有(在方法体之外)。
2、可以使用java语言中任何的一种数据类型(基本和引用类型都可以的)。
3、在定义成员变量时时可以对它进行初始化(就是一开始就赋值)初始化的值会跟随创建对象时一起被拿走(不建议)。如果不对其初始化,在创建对象时,调用构造方法使用java的默认值对其赋值。
4、成员变量在创建对象时会从类中复制一份到对象之中。
5、成员变量是可以被类中的方法、构造方法和特定类中的语句所访问到的。
6、成员变量的作用范围是在整个类当中。
(成员变量的生命周期:(对象创建时出现,对象结束时变量也就销毁了))。
局部变量
1、在方法(成员方法、构造方法)中,或者在代码块中包含。
2、局部变量可以使用java语言中任何数据类型(包括基本数据类型和引用数据类型)。
3、局部变形在使用前必须显示的初始化赋值(人为定义)。
4、变量的声明和初始化都是在方法当中,方法结束后,变量也是会自动销毁的
(局部变量的生命周期:(方法被调用时出现,方法运行结束时变量也就销毁了))。
变量的生命周期:变量什么时候产生,什么时候销毁。
类中的方法
方法有:成员方法、构造方法、方法的重载
在类当中也要创建出方法,在现实当中,就相当于画好一个图纸,后面在根据图纸进行转换。
成员方法:(非static修饰的)被对象调用,完成对象的功能(行为)
访问权限修饰符 返回值/void 方法名 (参数名){
return 返回值;
}
//这就是一个简单的类
public class Car {
//以下都是类的属性(成员变量)
//[修饰符] 类型 变量名 = [值]
String name;
String color;
float price;
//成员方法 类的行为
//访问权限修饰符 返回值/void 方法名 (参数名){ return 返回值 }
public void run() {
System.out.println(name + "车辆可以行使");
}
public void stop() {
System.out.println(name + "车辆可以行使");
}
}
上面这就是创建出了一个简答的类,当创建好类后我们就要根据类给出的来创建出方法。
构造方法:
1、用来初始化创建出来的对象 例如给对象中的属性进行赋值
2、构造方法的名字是和类名相同的,且是没有返回值的,也不需要void来修饰。
3、在创建一个对象时,至少要调用一个构造方法
4、(每个类都是有自己的构造方法,如果没有显式地为类定义构造方法,Java则会为该类提供一个默认的构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造就会失效)
5、当然一个类是可以拥有多个构造方法的。
public class TestCar {
public static void main(String[] args) {
//这是在调用构造方法
Car b = new Car();
Car bc = new Car("奔驰", "黑色");
System.out.println(bc.name);
System.out.println(bc.color);
Car ad = new Car("奥迪", 20000f);
System.out.println(ad.name);
System.out.println(ad.price);
}
}
多个构造方法,在调用时是用传的参数类型做区别的
//这就是一个简单的类
public class Car {
String name;
String color;
float price;
//构造方法
//访问权限修饰符 方法名(也就是类名) (参数){ }
public Car() {
System.out.println("这是一个无参的构造方法");
}
public Car(String n, String c) {
name = n;
color = c;
System.out.println("这是一个String、String类型的有参构造方法");
}
public Car(String n, float p) {
name = n;
price = p;
System.out.println("这是一个String、float类型的有参构造方法");
}
}
方法的重载
在同一个类当中,有多个方法他们的名称相同。
如何区分它们,是靠参数来区分的,(参数的个数不相同、类型不同 、顺序不同)
方法的重载和返回值类型是没有关系的
当然普通的成员方法也是可以重载的。