黑马程序员——面向对象

来源:互联网 发布:关于乔任梁网络暴力 编辑:程序博客网 时间:2024/06/06 00:56

------- android培训、java培训、期待与您交流! ----------

 

面向对象

 

面向对象基本概念

1.      面向对象和面向过程

面向过程注重的的是过程中的动作

二面向对象是注重实体

例如将大象装进冰箱

面向过程: 1.打开冰箱 2.将大象塞进去 3.关上冰箱门

面向对象: 1.找到实体a大象b冰箱2.找到动作a打开 b放入 c关上

2.      将具体动作赋予相应的实体

3.      面向对象中的类,对象,方法,属性

a)      :具有相同特征与行为的一类事物的抽象,类包含两个部分,属性和方法(函数)

b)      对象:是类的一个具体化

类和对象的关系是: 类是抽象的, 而对象是类的实例化

4.      引用类型的默认值是null

5.      变量

a)      成员变量:声明在类内的变量

b)      局部变量:声明在方法内的变量

区别

1)      初始值:成员变量给有默认值,局部变量在使用前必须初始化

2)      内存空间:成员变量保存在堆内存中,局部变量在栈空间

3)      生命周期:成员变量随着对象的创建而创建,随着对象的销毁而销毁,局部变量当使用完就会消失

4)      作用域:成员变量是在整个类内有效,局部变量是在方法内有效

6.      匿名对象

格式 new String() = “张三”;

只能使用一次, 调用属性无意义, 多用于传值

7.      类与类之间的关系

依赖: A中的方法操纵了类B的对象

聚合: A的对象中包含了类B的对象(B的对象时A的属性)

继承(后面学):

封装

1.      封装是面向对象的基本特征之一,最基本的目的就是为了提高代码安全性

a)      类是一种封装,封装了属性和方法

b)      对象封装了成员属性

c)      方法封装了功能

封装是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式

注意: 修饰类和方法的两个权限修饰符

1)      private私有的,只能在本类使用

2)      public公共的,任何地方都可以使用

2.      封装的好处

1)      将变化隔离

2)      便于使用

3)      提高代码重用性

4)      提高代码安全性

3.      封装原则

将类中的不对外显示的属性private,对外提供get/set方法

语法规则: get/set 属性名(第一个字母大写)返回布尔类型是is +属性名

get有返回值, set没有返回值

构造方法

1.      构造方法使用来创建对象的

如果一个类没有人为定义构造方法,当这个类加载时JVM会自动为这个类创建一个默认的构造方法,如果人为写了, JVM不会创建

2.      格式

public 类名() {}

1)      构造方法名必须与类名一模一样

2)      没有返回值类型, void也没有

3)      没有修饰符,权限修饰符除外

3.      构造方法可以重载

用于创建对象的过程中为对象属性赋值

构造方法不能像方法一样用程序调用,只能是创建对象时执行

this关键字

a)      this代表本类对象,用于区别成员变量与局部变量

b)      this位置

1)      成员方法内,当前调用方法的随想

2)      构造方法内

注意: 成员变量和局部变量不重名,可省略this

 

构造, 局部代码块

1.      构造代码块

格式: 在成员方法位置上{code… }

优先于构造方法执行, 内容是所有构造方法都执行的内容, 每次执行构造方法都会执行

2.      局部代码块

格式: 在方法内部{code… }

限定变量生命周期, 代码块中的变量在代码块结束时一块消失

 

static关键字(修饰符)

1.      static属性

1)      生命周期与类的生命周期一样,随着类加载而加载的

2)      内存中只有一个,所有对象共享

3)      对于静态属性(类属性),一般不使用对象的引用调用,而是类名.静态属性

static修饰的属性优先于对象存在

 

静态属性与实例属性的区别

1)      内存空间

2)      生命周期

3)      共享方式

4)      调用方式

 

2.      static方法

1)      只能在static方法内使用static属性

2)      static方法内不能使用this,super这样的关键字,因为static修饰的属性和方法优先于对象存在

3)      调用方式可以是对象引用.方法名,也可以是类名.方法名,建议类名.方法名

注意: 普通方法内可以使用静态属性和静态方法

4)      如果当前方法内使用的属性不是成员属性,这时使用static方法

5)      静态方法一般描述的是一个独立的工呢过

 

3.      类方法,实例方法,静态方法区别

1)      结构

类方法用static修饰,可以有返回值,没有用void

实例方法描述与成员属性有关的操作,可以有返回值,没有用void

没有修饰符, 权限修饰符除外,没有返回值, void也没有

2)      应用

类方法描述与成员属性无关的操作

实例方法描述与成员属性有关的操作

构造方法用来创建对象

3)      调用

类方法: 类名.方法名,引用.方法名

实例方法: 引用.方法名

构造方法: 创建对象的时候用的

4)      内存空间

类方法在方法区内的静态区域

实例方法和构造方法在方法区内

 

静态代码块

1.      格式 static{code…}

2.      相对于构造代码块只会执行一次,优先于构造代码块,构造方法执行

3.      静态代码块内使用的成员必须是静态的

4.      静态代码块一般用来描述类的相关信息,执行比较消耗资源,并且加载一次就能用的,或者对于程序启动时需要优先执行的

5.      构造和静态代码块区别:构造方法是某个对象的信息,静态代码块是类的信息

 

扩展

Java中注释

1.      单行注释 //

2.      多行注释 /*…*/

3.      多行文本注释 /**….*/

在多行文本注释内可以用以下几个标识描述类的相关信息,这些信息能够被javadoc提取出来

@param 生成参数

@return 生成返回值

@author 作者

@version 生成版本

 

继承

类与类的关系: 依赖, 聚合,继承

1.      继承是将多个类中共同的内容向上抽取产生一个父类,也称基类或者超类

2.      格式:子类 extends父类

3.      继承的好处是提高了代码的复用性,提供了多态的前提

4.      继承中的构造方法(重点)

1)      构造方法不可以继承或者被继承

super()是执行父类的构造方法(无参),父类构造存在无参构造方法时,子类的构造方法中默认存在一个super()

2)      Java中所有类默认的父类是Object,父类的构造方法是为了子类对象的实例化

3)      super(), this()关键字

a)        它们只出现在构造方法中

b)        它们只能是构造方法中的第一句

c)        它们不能共存,出现多次,就会执行多次构造方法

d)        继承中的成员属性, this用来区分成员属性和局部属性, super用来区分子类属性与父类属性

5.      继承中的成员方法(重点)

重写: 子类中存在一个与父类一样的方,作用是将父类中的方法进行功能扩展

注意:

a)      子类中静态方法只能覆盖静态中静态的

b)      子类方法权限一定要大于等于父类中方法的权限

c)      私有方法不能被重写

 

final关键字(重点)

1.      final修饰类,代表类不能够被继承

2.      final修饰方法,代表方法不能被重写

3.      final修饰属性,代表属性是常量,没有赋初值的话,对象创建过程中可以改变值,对象创建完成后不能改变

例如

final int I;

class (int i) {

this.i = I;

}

这样在创建对象的时候传入一个参数对final属性赋值

 

多态

1.      多态的前提是存在继承关系,要有方法重写

2.      多态的优点是提高程序的前期扩展性,提高了后期的维护性

3.      多态最常见的体现是父类引用指向子类对象

4.      多台存在时成员属性与成员方法的表现

1)      实例属性,类属性,类方法在编译时都是看父类中是否存在属性或者方法,执行是也是执行父类中的属性和方法

2)      实例方法在编译时检查父类中是否有此方法,执行时是执行的子类对象中的方法

 

引用类型之间的转换

引用类型之间转换前提是存在多态

1.      向上转换

自动转换, 父类引用指向子类对象

2.      向下转换

强制转换, fatherinstance instanceof Son关系操作符返回true,Son son = (Son) fatherInstance

 

原创粉丝点击