繼承概念:簡單說就是一個類使用extends來關聯另一個已存在的類(API中的或者自己寫的),Java繼承是面向對象的最顯著的特徵之一併且一個類只能單繼承(只能繼承一個 類)不能多繼承。
繼承特點:繼承是單一的;
繼承關係是可以傳遞的;
層次關係鮮明;
總的來說:Java繼承是單一的,可以調用父類的方法(一般來說不能調用父類的構造方法),雖然不能多繼承,但是Java提供了接口這個概念,來彌補繼承的單一性。
</pre></p><p><span style="white-space:pre"></span>例如:</p><pre name="code" class="java"><span style="color:#33cc00;">// 父類</span>
class person{
public void count(){
int x=3,y=4;
System.out.println("x+y="+(x+y));
}
}
<span style="color:#33cc00;">//主類(子類)
//Demo繼承的person Demo是子類,person是父類,
//繼承使用關鍵字extends</span>
public class Demo extends person{
<span style="background-color: rgb(255, 255, 255);"><span style="color:#33cc00;">// 主函數</span></span>
public static void main(String[] args) {
// TODO Auto-generated method stub
<span style="color:#33cc00;">// 建立對象demo</span>
Demo demo = new Demo();
<span style="color:#33cc00;">// 使用對象調用父類的方法count()。
</span> demo.count();
}
}
類
類是對一個或幾個相似對象的描述,是具有相同屬性和方法的一組對象集合。類中的數據稱爲成員變量,對數據的操作稱爲成員方法。
類的語法格式:[修飾符]class 類名[extends 父類名] [implements 接口名序列]{
類主體
}
對象
創建對象。在Java中創建對象包括聲明對象、爲對象分配內存空間兩部分。
(1)聲明對象格式
類名 對象名;
(2)爲對象分配內存空間要使用new運算符和類的構造放法。
格式:對象名 = new 類名([參數列表]);
(3)以上兩步可以寫到一起
類名 對象名 =new 類名([參數列表]);
抽象類
1. 定義
在Java中用abstract修飾的類稱爲抽象類,方法爲抽象方法,抽象方法只有聲明沒有具體實現,誰實現抽象類就必須實現裏面的所有方法
定義抽象類的格式:
abstract class 類名{
.......
}
定義抽象方法:
abstract 返回值類型 方法名([參數])
如下:
abstract class Employee
{
int basic = 220;
abstract void salary();
}
接口
1. 定義
創建接口的語法如下:
[修飾符]類型 接口名[extends 父接口列表] {
[修飾符]類型 屬性名=值;
返回值類型 方法名 (參數列表);
}
2. 接口實現
class 類名 implements 接口名[ ,接口名...555555555555]
注意:修飾接口的修飾符只有public和默認修飾符兩種。
可以多重繼承,接口只能繼承接口,不能繼承類。
屬性定義時必須賦值,是常量,屬性的修飾符默認爲final、static。
接口中的方法必須是抽象方法。
封裝
封裝的目的:
(1)隱藏類的實施細節
(2)迫使用戶通過接口去訪問數據
(3)增強代碼的可維護性
如下:
class Card
{
private String cardNumber = null;
String getNumber(){
return cardNumber;
}
void setNUmber(String cardNumber){
this.cardNumber = cardNumber;
}
}
注意:抽象類不一定要包含抽象方法,但是有抽象方法的類一定是抽象類。多態
多態的表現形式主要有方法的重載和方法的覆蓋
1.方法重載
方法重載實際上就是方法名相同,但是參數不同。
例如:
class Card
{
String cardNumber=null;
Card(){ }
Card(String cardNumber){
this.cardNumber=cardNumber;
}
2.方法覆蓋
類繼承過程中,子類方法跟父類方法名字相同,並且傳遞參數完全一樣,稱子類覆蓋父類的方法。
例如:
public class Demo1 extends Animal{
void sound(){
System.out.println("aaaa");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1 d= new Demo1();
d.sound();
}
}
class Animal{
void sound(){
System.out.println("wangwang");
}
}