面向对象要经过完整的分析、设计之后才可以进行开发
面向对象的思维:做为这个问题来说,1、在这个问题中应该有哪些类 哪些对象 2、每种类和对象应该有哪些属性和方法 3、类和类之间具备哪些关系
面向对象种类:
OOA: 面向对象的分析OOD: 面向对象设计
OOP: 面向对象程序
面向对象的三大特征:
封装(Encapsulation) 对外部不可见
继承(Inheritance) 扩展类的功能
多态(Polymorphism) 方法的重载、 对象的多态性 (方法的重载 )
类与对象:
类:表示共性的产物 (抽象的、概念上的定义)
对象:对象就是一个个性的体现(该类事物的每个个体 实例 instance)
关系:没有类则肯定没有对象的产生,没有对象的产生类不能使,对象的所有活动范围在类中已经完整定义出来了。
类(相当于一个对象的操作图纸) ——>对象(按照此图纸产生出来的对象)——>被用户使用
类与对象的概念:
类的组成:属性 方法
class 类名称{
数据类型 属性;//声明成员变量(属性)
public 返回数据类型 方法名称(参数1,参数2.......){//定义方法的内容
程序语句;
return 表达式;
}
}
对象的生产:(对象声明之后,必须实例化才能使用)需要划分堆栈空间的
1.声明对象: 类名称 对象名称 = null;
2.实例化对象: 对象名称 = new 类名(); (会开辟对应的堆内存空间)
在堆内存中实际上存放的是对象的各个属性
类中的属性全部保存在堆内存中,全部的方法保存在全局代码区之中。
内存划分(只要一出现关键字new 就表示要开辟新的内存空间)
public class ClassDemo{ public static void main(String args[]){ Person per = new Person(); } }
内存操作:为属性赋值
public class ClassDemo{ public static void main(String args[ ]){ Person per = new Person(); per.name = "张三";//为属性赋值 per.age = 30; per.tell(); //调用类中的方法 } }
在对象的操作中实际上是存在引用传递的。(将一个堆内存空间的使用权交给了其他对象)
一个栈内存空间只能引用一个堆内存空间,但是一个堆内存可以呗多个栈内存所同时指向
操作类的两种情况:
访问属性: 对象名称.属性 = 值
访问方法: 对象名称.方法