Java之面向对象编程--类与对象的定义与使用

1.面向对象编程:对现实生活的抽象
1.1面向对象三大特征**(面试常见题)**
  封装:将客观事物封装为抽象的类,并且类可以将自己的数据与方法只对可信的类与对象开放,对不可信的进行隐藏。内部操作对外部而言不可见。(保护性)
  eg:银行卡取款
 
  继承:继承描述的是一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下进行功能上的扩展。要使用继承,必须满足is-a原则(代码复用)
 多态(****):一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。(利用多态可以得到良好的设计)
1.2面向对象名词扩展
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程

2.类和对象的定义与使用
 类指的是共性的概念(人类),而对象是类的一个具体的、可以使用的事物(赵丽颖)。
 首先产生类(类是生产对象的蓝图),而后才可以产生对象。对象所具备的所有行为,一定在类中进行了完整定义。
类中的组成:
方法:操作的行为
属性:变量,描述每个对象的具体特点

2.1类的定义
使用class定义
class 类名称 {
  属性1;
  属性2;
 属性n…;
 方法1(){}
 方法2(){}
 方法n(){}…
}
eg.
class Person{
  private String name;
  private int age;
  public Person(String name,int age){
    name = mull;
    age = 0;
    this.name = name;
    this.age = age;
   }
}
类中定义的普通属性与方法不再由主类直接调用,而要通过该类的对象来调用。
产生对象语法:类名称 对象名称 = new 类名称();
//产生一个名为per的person对象
Person per = new Person

2.2 对象内存分析
栈内存(方法不同内存不同):方法的局部变量、方法形参、引用
堆内存(所有方法共享此内存):数组对象、所有类对象
  当看见关键字new,一定在堆上开辟了新空间
对象的引用传递:多个栈内存指向同一块堆内存
Java之面向对象编程--类与对象的定义与使用

2.3对象的空指针问题
所有引用数据类型变量必须赋值后使用,否则会抛出NullPointerException(运行时异常)

2.4引用传递分析
Java之面向对象编程--类与对象的定义与使用
 当per2 = per1时:
 Java之面向对象编程--类与对象的定义与使用
 垃圾空间:没有任何栈内存指向的堆内存空间