面向对象的特性 :(1) 封装性 、(2) 继承性 、(3) 多态性
类与对象
类实际上是表示一个客观世界中某类群体的一些基本特征抽象 ,属于抽象的概念集合 。例如 :汽车 、轮船 、书 。类实际上是对象操作的模版 ,但是类不能直接使用 ,必须通过实例对象来使用 。类由属性和方法组成 。
对象表示一个个具体的事物 。例如 :张三同学 、李四的汽车 、王五的账户 ,这些都是可以使用的事物 ,就可以理解为对象 ,对象表示的是一个个独立的个体 。
例如人的性别 、姓名 就被称为属性 。吃饭、睡觉被称为方法 。
class Book{ //定义一个新的类
String title ; //书的名字
double price ; //书的价格
public void getInfo(){ //此方法由对象调用
System.out.println("图书的名称:"+title+",图书的价格:"+price);
}
}
上述代码定义了一个Book类 ,而方法getInfo()没有加static 。和之前的代码不同 ,可以先这样理解 :由对象调用的方法不用加static ,如果不是由对象调用的方法 ,必须加上static 。
声明并实例化对象
格式 :声明并实例化对象
类名称 对象名称 =new 类名称() ;
格式 :分步完成
声明对象 : 类名称 对象名称 =null ;
实例化对象 :对象名称 =new 类名称() ;
操作对象
对象 . 属性 ;
对象 . 方法 () ;
class Book{
String title ;
double price ;
public void getInfo(){
System.out.println("图书的名称:"+title+",图书的价格:"+price);
}
}
public class TestDemo{
public static void main(String args[]){
Book bk =new Book(); //声明并实例化对象
bk.title ="java开发大全" ;//操作属性内容
bk.price =89.9 ;//操作属性内容
bk.getInfo();//调用类中的方法
}
}
程序执行结果 :图书的名称 :java开发大全 ,图书的价格 :89.9
堆内存 :只能依靠new来开辟 ,保存对象的真正数据 ,都是每一个对象的属性内容 。
栈内存 :保存一块堆内存的地址 。
引用传递
class Book{
String title ;
double price ;
public void getInfo(){
System.out.println("图书的名称:"+title+",图书的价格:"+price);
}
}
public class TestDemo{
public static void main(String args[]){
Book bkA =new Book(); //声明并实例化对象
bkA.title ="java开发大全" ;//操作属性内容
bkA.price =89.9 ;//操作属性内容
Book bkB =null ;
bkB = bkA ;
bkB.title ="jsp开发";
bkA.getInfo();//调用类中的方法
}
}
程序执行结果 :图书的名称 :jsp开发大全 ,图书的价格 :89.9
可以理解为bk储存的是一块栈内存 ,栈内存用来指向一块堆内存 ,堆内存中存储着对象的属性 。