天天看點

黑馬程式員_java基礎之面向對象(三)

 ------- <a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="blank">android教育訓練</a>、<a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="blank">java教育訓練</a>、期待與您交流! ----------

抽象類和接口,以及内部類的使用。

抽象類

抽象類的概述

抽象類特點:

a:抽象類和抽象方法必須用abstract關鍵字修飾

抽象類格式: abstract class 類名 {}

抽象方法格式: public abstract 傳回值類型 方法名();

b:抽象類不一定有抽象方法,有抽象方法的類一定是抽象類

c:抽象類中可以有構造方法,抽象類不能進行執行個體化,那麼要構造方法有什麼作用呢?

用于子類通路父類資料時的初始化

d:抽象類不能執行個體化那麼,抽象類如何執行個體化呢?

按照多态的方式,由具體的子類執行個體化。其實這也是多态的一種,抽象類多态。

e:抽象類的子類

要麼是抽象類

要麼重寫抽象類中的所有抽象方法

抽象類的成員特點

a:成員變量:既可以是變量,也可以是常量。

b:構造方法:有。用于子類通路父類資料的初始化。

c:成員方法:既可以是抽象的,也可以是非抽象的。

接口

接口的概述:

接口特點:

a:接口用關鍵字interface表示格式:interface 接口名 {}

b:類實作接口用implements表示格式:class 類名 implements 接口名 {}

c:接口不能執行個體化

那麼,接口如何執行個體化呢?

按照多态的方式來執行個體化。

d:接口的子類

a:可以是抽象類。但是意義不大。

b:可以是具體類。要重寫接口中的所有抽象方法。(推薦方案)

接口的成員特點

成員變量;隻能是常量,并且是靜态的。

預設修飾符:public static final

建議:自己手動給出。

構造方法:接口沒有構造方法。

成員方法:隻能是抽象方法。

預設修飾符:public abstract

建議:自己手動給出。

類與類,類與接口,接口與接口的關系:

a:類與類:

繼承關系,隻能單繼承,可以多層繼承。

b:類與接口:

實作關系,可以單實作,也可以多實作。

并且還可以在繼承一個類的同時實作多個接口。

c:接口與接口:

繼承關系,可以單繼承,也可以多繼承。

抽象類與接口的差別

A:成員差別

抽象類:

成員變量:可以變量,也可以常量

構造方法:有

成員方法:可以抽象,也可以非抽象

接口:

成員變量:隻可以常量

成員方法:隻可以抽象

B:關系差別

類與類

繼承,單繼承

類與接口

實作,單實作,多實作

接口與接口

繼承,單繼承,多繼承

C:設計理念差別

抽象類 被繼承展現的是:”is a”的關系。抽象類中定義的是該繼承體系的共性功能。

接口 被實作展現的是:”like a”的關系。接口中定義的是該繼承體系的擴充功能。

内部類:

内部類的分類:

成員位置:在成員位置定義的類,被稱為成員内部類。

局部位置:在局部位置定義的類,被稱為局部内部類。

内部類通路特點

a:内部類可以直接通路外部類的成員,包括私有。

b:外部類要通路内部類的成員,必須建立對象。

class Outer {

class Innter {

}

}

格式: 外部類名.内部類名 對象名 = 外部類對象.内部類對象;

Outer.Inner oi = new Outer().new Inner() ;

private 為了保證資料的安全性

static 為了友善通路資料

注意事項:  a:靜态内部類通路的外部類資料必須用靜态修飾。

  b: 成員方法可以是靜态的也可以是非靜态的

格式:

外部類名.内部類名 對象名 = new 外部類名.内部類名();

匿名内部類

其實是内部類的一種簡化的寫法 , 屬于局部内部類的範圍

前提:

需要有一個類或者接口,這個類可以是抽象類也可以是非抽象類

格式:

new 類名/接口名() {

複寫方法 ;

} ;

本質:

是一個繼承自某一個類或者實作了某一個接口的子類對象 ;

class Animal {} 

// 本質: 就是繼承自Animal的子類對象

new Animal() {

} ;

繼續閱讀