面向对象(上)-类与对象
一、面向对象学习的三条主线(大处着眼 小处着手)
- Java类及类的成员:属性、方法、构造器;代码块、内部类
- 面向对象的三大特征:封装性、继承性、多态性、(抽象性)
- 其他关键字:this、super、static、final、abstract、interface、package、import等
二、面向对象与面向过程(理解)
举例:“把大象装进冰箱”
- 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做
①把冰箱门打开
②抬起大象,塞进冰箱
③把冰箱门关掉 - 面向对象:强调具备了功能的对象,以类、对象为最小单位,考虑谁来做
人{
打开(冰箱){
冰箱.开开();
}
抬起(大象){
大象.进入(冰箱);
}
关闭(冰箱){
冰箱.闭合();
}
}
冰箱{
开开(){}
闭合(){}
}
大象{
进入(冰箱){}
}
三、完成一个项目(或功能)的思路
四、面向对象中两个重要的概念
- 类:对一类事物的描述,是抽象的、概念上的定义
- 对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)
- 面向对象程序设计的重点就是类的设计
- 设计类,就是设计类的成员
- 二者的关系:对象,是由类new出来的(派生出来的)
五、面向对象思想落地实现的规则
- 创建类,设计类的成员
- 创建类的对象
- 通过"对象.属性"或"对象(对象名).方法"调用对象的结构
补充:几个概念的使用说明
属性(对应类中的成员变量) = 成员变量 = field = 域、字段
方法(对应类中的成员方法,方法体现的是行为) = 成员方法 = 函数 = method
创建类的对象 = 类的实例化 = 实例化类
六、对象的创建与对象的内存解析
- 典型代码
Person p1 = new Person();
Person p1 = new Person();
Person p3 = p1;//此处没有新创建一个对象,共用一个堆空间中的对象实体
- 说明
如果创建了一个类的的多个对象,则每个对象都独立的拥有一套类的属性(非static的)
意味着,如果我们修改一个对象的属性a,则不影响另外一个对象属性a的值
- 内存解析
七、匿名对象
- 理解:我们创建的对象,没有显示的赋给一个变量名,即为匿名对象
- 举例:
//"有名"对象
phone.sendEmail();
phone.playGame();
//匿名对象
new Phone().sendEmail();
new Phone().playGame();
- 特点:匿名对象只能使用一次
new Phone().price = 1999;
new Phone().showPrice();//0.0
- 应用场景:
public class InstanceTest {
public static void main(String[] args) {
Phone phone = new Phone();
//phone = null;
System.out.println(phone);//com.oopt.demo.Phone@4554617c
//"有名"对象
phone.sendEmail();
phone.playGame();
//匿名对象
new Phone().sendEmail();
new Phone().playGame();
new Phone().price = 1999;
new Phone().showPrice();//0.0
//******
PhoneMall mall = new PhoneMall();
//mall.show(phone);
//匿名对象的使用
mall.show(new Phone());
}
}
class PhoneMall{
public void show(Phone phone){
phone.sendEmail();
phone.playGame();
}
}
class Phone{
double price;//价格
public void sendEmail(){
System.out.println("发送邮件");
}
public void playGame(){
System.out.println("玩游戏");
}
public void showPrice(){
System.out.println("手机价格为:" + price);
}
}
作者:犄角旮旯是程序媛吖
版权:本文版权归作者和博客园所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。