java回顾之面向对象一:封装、继承、多态_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java回顾之面向对象一:封装、继承、多态

java回顾之面向对象一:封装、继承、多态

 2017/4/2 5:32:29  welcomezhang  程序员俱乐部  我要评论(0)
  • 摘要:类(class)是一批对象(object)的抽象,对象是类的实例(instance)。对事物的描述通常包括两方面:一个是属性,一个是行为。成员变量其实就是类中的属性。成员方法就是类中的行为。类构造器成员变量方法成员变量vs局部变量成员变量定义在类中,整个类都可以访问;局部变量定义在函数中,语句局部代码快中,只在所属的区域有效。成员变量存在于堆内存的对象中;局部变量存在于栈内存的方法中。成员变量随着对象的创建而存在,随着对象的小时而消失;局部变量随着所属区域的执行而存在,随着所属区域的结束而释放
  • 标签:Java 继承

类(class)是一批对象(object)的抽象,对象是类的实例(instance)。

?

对事物的描述通常包括两方面:一个是属性,一个是行为。

成员变量其实就是类中的属性。成员方法就是类中的行为。

?

成员变量?vs局部变量

?

  • 成员变量定义在类中,整个类都可以访问;局部变量定义在函数中,语句局部代码快中,只在所属的区域有效。
  • 成员变量存在于堆内存的对象中;局部变量存在于栈内存的方法中。
  • 成员变量随着对象的创建而存在,随着对象的小时而消失;局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。
  • 成员变量都有默认的初始化值;局部变量没有默认的初始化值,必须先定义,赋值,才能使用。

?

?

静态方法:可以直接通过类来访问静态方法;静态方法的操作可以不依靠对象;静态方法上不能使用this关键字,也不能操作非静态属性和方法。

成员变量
?vs?静态变量
①两个变量的生命周期不同

  • 成员变量随着对象的创建而存在,随着对象的回收而释放。
  • 静态变量随着类的加载而存在,随着类的消失而消失。

②两种变量的调用方式不同

  • 成员变量只能被对象调用。
  • 静态变量可以被对象调用,还能被类名调用。

③成员变量也称实例变量;静态变量也称类变量。

④成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据;静态变量数据存储在方法区(共享数据),所以也叫对象的共享数据。?

?

面向对象三大特征

  • 封装(encapsulation
  • 继承(extend
  • 多态(polymorphism

?

封装

隐藏实现细节,让使用者只能通过指定方法来访问数据。

default修饰符

note:default这个修饰符经常使用,但是对它的访问控制级别经常模糊不清。


?

?

继承

1.继承的概念
当多个类存在相同属性和行为时,将这些类抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只需要继承那个类即可。关键字extends表明正在构造的新生类派生于一个已存在的类。已存在的类被称为超类(superclss)、基类(base
?class)或父类(parent?class);新类被称为子类(subclass)。“is-a”关系是继承的一个明显特征。

父类(基类、超类)子类

?

2.通过extends关键字来实现类与类的继承,如:class?子类名?extends?父类名{}

?

重写overridevs重载overload

重写:子父类中,子类重写了父类的方法。

重载:同一个类,出现方法名称相同、参数列表不同的情况

二者除了都是发生在同名方法之间,没有其他相似之处。

?

继承vs组合

集成:是(is?a),适合用在2个类之间有一般、特殊的关系

组合:有(has?a)的关系,适合用在2个类之间有明确的整体、部分的关系

?

this vs super

this:代表的对象是当前类。

super:用于在子类中调用父类被覆盖的方法

?

Final阻止继承

final关键字是最终的意思,可以修饰类,成员变量,成员方法。

  • final关键字修饰的类不可以被继承。
  • final修饰的方法不可以被覆盖。
  • final修饰的变量是一个常量,只能被覆盖。

?

多态

多态分两种:

(1)??编译时多态(设计时多态):方法重载。

(2)??运行时多态:Java运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态)

?

相同类型的变量,调用同一个方法时呈现出多种不同的行为特征。从一定角度来看,封装和继承几乎都是为多态而准备的。实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

?

多态:父类型的引用可以指向子类型的对象。

比如 Parent p = newChild();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误
如果有,再去调用子类的该同名方法

?

多态存在的三个必要条件

?

  • 要有继承
  • 要有重写
  • 父类引用指向子类对象

?

?

类型转换

  • 向上转型(upcasting):子类型转为父类型,无须任何类型转换。
  • 向下转型(downcasting):父类型转为子类型,必须要使用强制类型转换。
    instanceof、类型转换(typevariable

?

发表评论
用户名: 匿名