java面向对象总结

类与对象:

类:具有相同特征的一类事物的抽象

对象:类的具体实例

类(对象)之间的关系:

关联关系:一个类的实例是另一个类中方法的参数

继承关系(一般与特殊):XX是一种XX,一个类派生出来另一个类

聚合关系(整体与部分):

实现关系:

多态:

面向对象思想

1有哪些类与对象

2类与对象有哪些属性与方法

3类与类的关系

成员变量:定义后可以初始化,若不初始化,系统自动初始化为默认值。(局部变量必须初始化后才能使用)

内存分为4部分,分别为代码区,栈(存放对象引用,局部变量),堆(存放对象,成员变量),数据段(存放静态变量及字符串常量)

基础数据类型定义的变量占一块内存(该内存空间存变量值),引用数据类型定义的变量占两块内存。

Dog d1,d2;       //栈中分配一块内存a1,a2

d1=new Dog();  //堆中分配一块内存b,a1指向b

d2=new Dog(m,n); //堆中分配一块内存c,a2指向c,c中存放成员变量

//栈中分配两块内存j,k存放构造函数的参数值m,n,将j,k赋值给c中成员变量,

  //释放栈中内存j,k

a1与a2中存放的不是物理地址,但根据存放的内容可以找到物理地址

返回值在栈中有临时的存储空间,返回完后就消失。

方法除了在内存的代码区存储外,在执行时还会占有内存,执行完方法就释放。在同一个时间同一个方法可能在执行多次

this关键词:指表示向当前对象的引用,存在于堆内存中的对象里,指向对象本身。this.成员方法/成员变量.

                  调用本类另外构造方法.this(被调用的构造方法参数)

 

static关键字:修饰变量时表示静态成员变量,属于类的公有变量,类的所有对象共享这一个变量

                  修饰方法时表示静态方法,在静态方法中不能直接访问非静态变量,非静态方法,可以通过创建对象调用。

 

super关键字:在子类中通过super引用父类对象。 super.父类成员方法/父类成员变量

                 在子类中调用父类构造方法。super(父类构造方法的参数)。(必须写在子类构造方法第一行)

 

子类的构造方法中必须调用父类构造方法,若没有显式调用父类构造方法,则默认调用父类无参构造方法。若父类中无无参构造方法,则编译出错

 

Object类:

Object类是所有类父类,若定义的一个类未说明继承哪个类,就默认继承Object类

finalize():当虚拟机回收垃圾前调用的方法。

getClass():返回已编译好的class对象。

hashCode():返回对象的哈希码(哈希码独一无二的代表了一个对象,可以通过哈希码找到该对象在内存的位置)

toString():进行String类型与其他类型数据连接时.(如System.out.println("Dog:"+d);),将自动调用toString()方法把其他类型转换为String类型 。           

            Object类的toString() 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。

              一般要在子类中重写这个方法

equals(Object obj):在Object类中,若两个对象的引用指向同一个对象,则返回true,否则返回false。

                           在String,Date等类中,若两个对象的引用指向同一个类的对象且属性相等时返回true,否则返回false

                          继承Object类后,一般要重写此方法。

“==”:用此运算符比较两个对象的引用,实际上是比较对象引用中存储的对象地址是否相同。

 

向上转型:子类对象转换为父类对象

向下转型:父类对象转换为子类对象

父类引用指向子类对象时,父类引用只能访问父类成员变量及成员方法。若子类重写了父类中的成员方法,则调用子类中已被重写过的成员方法。

 

abstract关键字:修饰类时表示抽象类,不能被实例化,必须被继承。

                       修饰方法时表示抽象方法,含有抽象方法的类必须被声明为抽象类。抽象方法只需要声明,不需要实现。但在继承的子类中必须被重写,或者子类继续声明为抽象类。

                     

final关键字:修饰的变量的值不能改变

                 修饰的方法不能被重写

                  修饰的类不能被继承

 

interface关键字(接口):是一种特殊的抽象类。接口中的所有方法不需实现,并默认为public abstract 类型。接口中的变量默认为public static final类型。

一个类可以实现多个接口,接口也可以继承其它接口。

父类接口指向子类实现,父类接口只能访问父类成员变量及子类已实现的父类成员方法。

posted @ 2014-08-02 14:38  shangshicc  阅读(296)  评论(0编辑  收藏  举报