《NEWedge–JAVA》0401 类及其构成–面向对象
面向对象
面向对象具体可以理解为我们可以将任何事物当做为一个体来进行思考,举一个简单的例子,例如我们可以将汽车命名为一个类,它可以启动、停止、同时它还具有很多的子类(发动机类、门类、车架类等等),我们可以根据这个类,创建许多一模一样的汽车,简单的说类就是图纸,对象就是根据图纸所创建出来的个体。
面向对象可以将复杂问题简单化,我们不需要思考过程怎么实施的,只需要考虑根据对象所具有的功能而调用即可。
项目的结构
Java项目也有其结构,通常来说,主要有两大部分组成,分别是JRE和src文件夹(源码文件夹),当然为了合理规范,我们通常还会在项目里创建一个test测试源代码文件夹。以src文件夹为例,其包含“包”“类”,包是专门用来存放类的,通常功能相同的类存放在相同的包中,就如下图所示:
1.类
类就是一个模板,它描述一类对象的行为和功能。声明格式如下:
[访问权限修饰符][修饰符]class[类名]{
}
//访问权限修饰符:public、 default
//修饰符:final 、abstract
//类名:一般大驼峰命名(详细细则看0301那一期)
对象就是类的实例化,实实在在的个体,声明格式如下:
[类名] [对象名] = new [类名]();
Eg:
Person p = new Person();
//同一类的每个对象有不同的成员变量存储空间。
//同一类的每个对象共享该类的方法。
构成:
类的结构通常来说,一个类里面是由属性、方法、构造方法、块、内部类型等等构成的。
成员变量:对象属性的描述;
方法:对象的行为;(可以做的事情)
构造方法:用于创建对象;
内部类: 即在类体中声明的类。
块:代码块
声明格式如下:
class Test{
//属性
int number;
String name;
char gender;
//方法
public void run(){
System.out.println("这是一个方法");
}
//构造方法
public Test(){
System.out.println("这是一个构造方法");
}
//静态块
static {
System.out.println("这是一个静态块");
}
//内部类型:内部类、接口等
interface Runnable() {
}
}
属性:也可以成为成员变量,主要是用于描述对象特征,语法格式如:
[修饰符]数据类型 变量名[=值]
eg: public int age;
private String name;
char gender;
在上述格式中,public、private皆为修饰符,其主要用于限制变量的权限(具体会在下文具体说明);数据类型可以是Java中任意的数据类型,变量名是变量的名称(名称要符合命名规则),属性可以具体赋值,也可以不赋值。
2.变量类型
一个类可以包含成员变量、局部变量、类变量
成员变量:
成员变量是定义在类中,方法体之外的变量。
成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量的作用范围为整个类体。
局部变量:
在方法、构造方法或者语句块中定义的变量被称为局部变量。
局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
局部变量在使用前必须初始化赋值。
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
类变量(静态变量):
类变量也声明在类中,方法体之外,但必须声明为static类型。
通俗理解为该属性就属于类了而不是对象的了。
3.方法
我们可以把方法理解为对象的动作
【修饰符] [返回值数据类型] 方法名([参数类型 参数名]){
//方法体(执行语句)
return 返回值
}
//在这里我们以汽车为对象,写一个跑 方法
public void run(){
System.out.println("汽车动了起来");
}
//我们以计算矩形周长为例,写一个计算的方法
public int perimeter() {
return 2*(rectangleLong+rectangleWidth);
}
在这里我们需要注意的是:
- 修饰符:方法的修饰符较多,有权限修饰符、静态修饰符static、最终修饰符final;
- 返回值类型:当方法返回值为void时,return及其返回值可以省略(大家可以参考第二个示范计算矩形周长的例子;
- 参数类型:限定调用方法时传入参数的数据类型(多态的形式之一);
- 参数名:一个变量,可用于接收调用方法时传入的数据;形参可无可有;
- return:用于结束语句或返回方法的指定值;
方法的出现提高了代码的复用性,且只有调用才会执行;在方法内可以调用方法。但不能定义方法。
4.方法的重载
Java允许在一个程序中定义多个名称相同,但是参数的类型或个数不同的方法,这就叫做方法的重载;
public class Test {
//两个整数相加
public int add(int a,int b) {
return a+b;
}
//三个整数相加
public int add(int a,int b,int c) {
return a+b+c;
}
//两个小数相加
public double add(double a,double b) {
return a+b;
}
public static void main(String[] args) {
Test7 test=new Test();
System.out.println("两个整数相加"+test.add(1,2));
System.out.println("三个整数相加"+test.add(1, 2, 3));
System.out.println("两个小数相加"+test.add(1.0, 2.0));
}
}
需要注意的是,方法的重载与返回值类型无关;并作用在同一类内,只需要满足方法名相同和参数个数或参数类型不同即可。
5.构造方法
构造方法是类中的一个特殊成员,在实例化时会自动调用;也就可以理解为在创建对象时必须要用到构造方法,即是一个类中几乎必须存在的成员;用于在实例化对象的同时为对象的属性进行赋值;
[修饰符] 方法名 ([参数列表]){
//方法体
}
class Test {
int number; //定义一个全局变量
public Test() {
System.out.println("这是一无参的构造方法");
}
public Test(int n) {
this.number=n;
System.out.println("这是一个有参数的构造方法 "+this.number);
}
public static void main(String[] args) {
Test test1=new Test(); //实例化对象test1
Test test2=new Test(8); //实例化对象test2
}
}
我们可以从例子中看出,构造方法需满足:
1.方法名与类名相同;
2.必须用public修饰;
3.构造方法方法可以重载;
4.不能用return返回一个值;且方法名前没有返回值类型的声明.
踏着层层台阶登攀,然然继续准备《NEWedge–JAVA》系列文章的更新;文中难免有纰漏或者错误,您若发现,烦请及时评论留言,我会在第一时间校正。或者,可以用评论留言的方式谈谈您的收获、想法和建议,方便更多的人学习收益!然然在此谢谢啦!,我们下次见