(1)面向对象:要经过完整的分析,设计之后才可以进行开发
面向过程:专注于解决问题
OOA:面向对象的分析
OOD:面向对象设计
OOP:面向对象程序
(2)面向读写的三大特征
封装:对外部不可见,保护类中的操作不被外部直接访问
继承:扩展类的功能,
多态:方法的重载,相同的方法名称根据参数的类型和个数不同调用的方法不同
对象的多态性,
(3)类与对象
类:共同属性或操作的集合
对象:是实际存在的事物个体,也叫做实例
没有类则没有对象的产生;没有对象类不能使用;对象的所有属性和操作都在类中实现。
类是对象的模板,对象时类的实例。
(4)类与对象的定义
类的组成:属性,方法
定义方法:
class 类名称
{
数据类型 属性名称;
[权限][静态] 返回值类型 方法名(参数列表)
{
方法体
}
}
对象的定义:
类名 对象名=new 构造方法名()
产生对象之后,就可以调用类中的属性或方法。
访问属性:对象名称.属性名称=值
访问方法:对象名称.方法名称()
对象的产生:
声明对象:类名称 对象名称=null;////直接使用此对象,会出现空指向异常
实例化对象:对象名称=new 类名称()////开辟堆内存空间,才可以直接使用
如果对象在使用中只是声明的话,则无法直接调用,必须实例化后才能使用。
数组的产生于数组一样,有堆-栈空间。对象实际上保存在栈内存中;实例化之后对象开辟对应的堆内存空间,堆内存中存放的是对象的各个属性,因为对象中只能依靠属性的不同来区分;全部的方法保存在全局代码区中。
只要出现new 就会开辟新的内存空间。
对象的操作中实际上存在引用传递,所谓引用传递,就是将一个堆内存空间的使用权交给其他对象,相当于为一个堆内存空间起一个别名。
在程序中所造成的无指向堆内存空间是垃圾空间,垃圾空间等待垃圾回收机制释放空间,垃圾回收称为GC
一个栈内存只能引用一个堆内存空间,但是一个堆内存空间可以被多个栈内存所同时指向。
四,封装性
(1)封装介绍
封装属性:private 数据类型 属性名称=默认值
封装方法:private 返回值类型 方法名(参数列表){}
私有的属性或方法只能在类里访问。
只要属性必须封装,被封装的属性通过setXX()及getXX()方法设置取得。
class Person{
private String name ; // 表示人的姓名
private int age ; // 表示人的年龄
public void tell(){ // 定义说话的方法
/////this表示在本类中调用该方法
System.out.println("姓名:" + this.getName() + ",年龄:" + this.getAge()) ;
}
public void setName(String n){
name = n ;
}
public void setAge(int a){
if(a>=0&&a<=200){
age = a ;
}
}
public String getName(){
return name ;
}
public int getAge(){
return age ;
}
};
public class OODemo10{
public static void main(String args[]){
Person per = new Person() ; // 实例化对象
per.setName("张三") ; // 为name属性赋值
per.setAge(-30);
per.tell() ;
}
};
通过间接地方式访问和设置私有属性。方法也可以用private修饰,但是此方法只能在类的内部进行访问,外部无法调用。
(2)类的图形表示
在开发类的时候将类用图形的方式展现给用户
例如:Person类的图形表示
属性的表示格式:访问权限 变量名称:数据类型
"-":减号表示private权限
方法的表示格式:访问权限 方法名称(参数名称:参数的类型,)返回值类型
"+":加号表示public权限
|
PowerDesigner工具的应用