类和对象
概念
对象:世界万物皆对象
每个对象都会从两个角度描述:
静态
属性:对象所拥有的各种特征.
每个对象的属性所拥有的值.
动态(行为)
方法:对象执行的操作
封装:将属性及方法相结合,共同体现对象的特性.
对象的属性和方法通常被封装在一起
类:具有相同属性和共同行为的一组对象的集合.
对象中抽取属性和行为的共同特征,从而抽象出类
类是一个高度抽象的概念
类是对象的抽象,对象是类的实例
类的定义
举例
public class Cubic
{
//底面长。宽
int a;
int b;
//高
int c;
//下面是方法
//求底面周长
public int length()
{
return 2*(a+b);
}
//求底面面积
public int area()
{
return a*b;
}
//求长方形表面积
public int totalArea()
{
int d=2*(a*b+a*c+b*c);
return d;
}
//求长方体体积
public int volumn()
{
int d=a*b*c;
return d;
}
}
方法中可以嵌套其他方法
例如上面的表面积和体积,可以改成
//求长方形表面积
public int totalArea()
{
//int d=2*(a*b+a*c+b*c);
int d=2*area()+length()*c;
return d;
}
//求长方体体积
public int volumn()
{
//int d=a*b*c;
int area()*c;
return d;
}
用类创建对象
public class Main {
public static void main(String[] args) {
//创建对象
Cubic cubic =new Cubic();
//使用
cubic.a=10;
System.out.println(cubic.a);
System.out.println(cubic.b);
cubic.b=20;
cubic.c=30;
System.out.println(cubic.length());
}
}
}
创建过程:
1.系统加载类的字节码
2.new操作:
- 根据字节码,在堆内存中为该类的成员变量中的实例变量分配内存,并赋默认值;
- 第一次创建类的实例时,分配实例方法的入口地址。
3.将对象的引用传递给变量
优点
1.面向对象程序设计可以模拟现实世界
2.类的封装性,其余人可以直接使用,不用关心具体实现
3.提高代码的重用性
类的成员变量
与局部变量区别
- 作用域和初始值不同.
-
- 成员变量:是类的属性,在类内都有效。(在类内位置随意,即使在语句下方定义也可以)
-
- 局部变量:方法行参,复合语句内部,循环语句内部,判断语句内有效
-
- 成员变量:初始值为0,局部变量:没有初始值
成员变量的引用问题
如果成员变量与局部变量重名(例为a)
局部变量的优先级高,
直接使用 a 默认是使用局部变量
如果想使用成员变量,使用this.a
类变量(静态变量)
类变量由类所拥有