前言
本文干货较多,不是速成,而是系统的细致的讲解。需要读者花费一定的时间进行学习,建议先收藏保存,日后仔细学习,我会持续更新JAVA内容。(ps:本文需要读者有C语言基础)
Java面向对象编程的核心思想包含封装性、继承性、多态性。本文主要介绍Java的封装性——类与对象。封装性作为面向对象编程的核心思想之一,就是将数据和对数据的操作封装在一起,通过抽象,即从具体的实例中抽取共同的性质,形成一般的概念——类的概念
目录
* 方法体的定义:方法可以对类中的变量进行操作,即给出算法。
一、类的定义
类的定义包含两个部分:类的声明和类体
Class 类名{
类体的内容;
}
1、类声明
作为一个合格的程序员,在声明类时对类名的命名时最好使用驼峰命名法(每个单词的首字母大写)例如:HelloChina,AmericanTime之类的命名方法。
2、类体
类声明之后的“{}”里的内容被称作类体。类体的内容一般包含变量声明和方法体的定义以下两个内容
* 变量的声明:用来储存属性的值。
在变量声明部分声明的变量被称作类的成员变量
成员变量:在整个类中都可以使用
局部变量:仅在方法体中可以使用
在方法体中声明的变量和方法的参数叫做局部变量
成员变量的隐藏:当成员变量与方法体中的局部变量重名时,编译器会自动将成员变量隐藏,使这个成员变量暂时在这个方法体中失效。若想要在使用这个成员变量时就需要用 “this.成员变量名”来引用成员变量。
* 方法体的定义:方法可以对类中的变量进行操作,即给出算法。
( 方法体的的定义就像是C语言中函数的定义相似,不过Java中的方法名可以为中文)
方法重载:(方法重载是多态性的的一种)一个类中可以有同名的多个方法,java的程序会自动根据你给的参数类型、个数来选择执行哪一个程序
例如下段代码。
class area{
float getarea(float r)
{
return 3.14f*r*r;
}
double getarea(float x,float y)
{
return x*y;
}
}
构造方法:是一种特殊定义的方法体,它的名字必须与类名相同而且没有类型和返回值。
class Trapezium{ //类声明
float up,down,high,S; //变量声明部分
Trapezium(){ //构造方法的定义
S=(up+down)*high/2.0f;
}
}
类方法、实例方法:方法类型前面加关键字static修饰的是类方法;不加static的是实例方法
class area{
int a;
static float getarea(float r)//类方法
{
return 3.14f*r*r;
}
float get(int a){ //实例方法
System.out.println(a);
return a;
}
}
3、几个值得注意的问题
因此赋值的操作就有了一个注意的问题
class A{
int a = 10; //合法,在初始化的时候进行赋值是可以的
int b;
b = 10; //不合法,因为对成员变量的操作必须都要放到方法中
}
*实例方法既能对类变量操作又能对成员变量操作,而类方法只能对类变量进行操作
class A{
int a;
static int b;
void f(int x,int y){
a=x; //合法
b=y; //合法
}
static void g(int z){
a=z; //非法
b=z; //合法
}
}
*一个类中的方法可以相互调用,实例方法可以调用该类中的实例方法、类方法,但是类方法只能调用类方法(这个注意事项类似于第二条,就不再用代码解释了)
*构造方法没有类型前缀
class Point{
int x, y;
Point(){ //是构造方法
x = 1;
y = 1;
}
void Point( int a, int b){ //不是构造方法(该方法的类型是void)
x = a;
y = b;
}
}
二、对象
1、创建对象
对象的声明
*创建对象包括对象的声明和对象分配变量的两个步骤
一般格式为:
类的名字 对象名字;(以上一代码段class Point为类名)
例如: Point A ;
为对象的声明
*为对象声明需要使用到new运算符,后续的使用方法和C语言的结构体相当类似
在这里我们用西游记的人物的代码来解释
class xiyouji{
float height,weight;
String head,ear;
void speak(String s){
System.out.println(s);
}
}
public class csdn{
public static void main(String[] args) {
xiyouji zhubajie,sunwukong; //声明对象
zhubajie=new xiyouji(); //为对象分配变量
sunwukong=new xiyouji();
}
}
对象的内存模型
1)用xiyouji声明变量zhubajie时的内存模型如下图
声明对象变量zhubajie后,zhubajie的内存中还没有任何数据,称这时的zhubajie是一个空对象,空对象不能使用,因为它还没有得到任何“实体”。必须再为对象分配变量,即为对象分配实体。
zhubajie=new xiyouji();
2)为对象分配变量后的内存模型
当系统一见到new运算符时就会立刻干下面两件事情。
(1)为height、weight、head、ear这4个变量分配内存,即Xiyouji类的成员变量被分配内存空间,如果成员变量在声明时没有指定初值,那么对于整型的成员变量,默认初值是0;对于浮点型,默认初值是0.0;对于boolean型,默认初值是false; 对于引用型,默认初值是null。然后执行构造方法中的语句。
(2) new运算符在为变量height、 weight、head、ear分配内存后,将计算出一个称作引用的值(该值包含着代表这些成员变量内存位置及相关的重要信息),即表达式new Xiyouji()是一个值。如果把该引用赋值给zhubajie那么Java系统分配的height、weight、head、ear的内存单元将由zhubajie操作管理,称height、weight、 head、ear是属于对象zhubajie 的实体,即这些变量是属于zhubajie的。所谓创建对象,就是指为对象分配变量,并获得一个引用,以确保这些变量由该对象来操作管理
对象的使用
通过使用点运算符“.”来调用对象的成员和方法。格式如下
对象.变量 | 例如:zhubajie.heigth |
对象.方法 | 例如:zhubajie.speak |
总结
以上就是今天要介绍的内容,本文仅介绍了类与对象的定义使用,一些与他们相关的语句还没介绍,预计下篇博客给大家介绍关键字和一些语句,当然建议大家使用idea编译器,因为日后我会介绍这个编译器的一些便捷方法。最后给我点个赞和关注吧,这对我真的很重要