參考鏈接: Java多重繼承
Java之繼承?
繼承是面向對象程序的一個基本特征,通過繼承可以實現父子關系,以及代碼的復用。通過繼承實現的類稱為子類,被繼承的類稱為父類,所有直接或間接被繼承的類都稱為父類。?
Java類體系中的根類是java.lang.Object,所有類都是Object的直接子類或間接子類。如果定義類時沒有extends子句,則該類的父類默認為Object。Java中不支持類似C++中的多重繼承特性,Java只支持單繼承,每個Java類最多只能有一個父類。在類的聲明中,通過extends關鍵字聲明一個繼承關系。?
?
示例1?
?
?動物類之狗,貓,鳥,魚分別繼承實現名字,年齡,動作的輸出?
?
代碼塊?
package com.Hwadee;
/**
?*繼承
?*/
?
public class Test {
?
? ? public static void main(String[] args) {
? ? ? ? Dog d=new Dog("狗",2);? ? ?//創建對象
? ? ? ? d.eat();
? ? ? ? Cat c=new Cat("貓",1);
? ? ? ? c.eat();
? ? ? ? Bird b=new Bird("鳥",3);
? ? ? ? b.eat();
? ? ? ? Fish f=new Fish("魚",6);
? ? ? ? f.eat();
? ? }
?
}
class Animal{
? ? String name;
? ? int age;
? ? public Animal() {? ? ? ? ? ? ?//默認構造函數
? ? }
? ? public Animal(String name, int age) {
? ? ? ? this.name = name;
? ? ? ? this.age = age;
? ? }
? ? public void eat(){
? ? ? ? System.out.println("吃東西");
? ? }
?
}
class Dog extends Animal{? ? ? ? //Dog類繼承Animal父類
? ? public Dog(){
? ? }
? ? public Dog(String name,int age){
? ? ? ? this.name=name;
? ? ? ? this.age=age;
? ? ? ? System.out.println("名字:"+name+"\t"+"年齡:"+age);
? ? }
? ? @Override? ? ?//方法重寫
? ? public void eat(){
? ? ? ? System.out.println("吃骨頭");
? ? }
}
class Cat extends Animal{
?
? ? public Cat() {
? ? ? ? super();
? ? }
?
? ? public Cat(String name, int age) {
? ? ? ? super(name, age);
? ? ? ? System.out.println("名字:"+name+"\t"+"年齡:"+age);
? ? }
? ? @Override
? ? public void eat(){
? ? ? ? System.out.println("吃魚");
? ? }
}
class Bird extends Animal{
?
? ? public Bird() {
? ? ? ? super();
? ? }
?
? ? public Bird(String name, int age) {
? ? ? ? super(name, age);
? ? ? ? System.out.println("名字:"+name+"\t"+"年齡:"+age);
? ? }
? ? @Override
? ? public void eat(){
? ? ? ? System.out.println("吃蟲子");
? ? }
}
class Fish extends Animal{
?
? ? public Fish() {
? ? ? ? super();
? ? }
?
? ? public Fish(String name, int age) {
? ? ? ? super(name, age);
? ? ? ? System.out.println("名字:"+name+"\t"+"年齡:"+age);
? ? }
? ? @Override
? ? public void eat(){
? ? ? ? System.out.println("吃蝦米");
? ? }
}
?
結果1?
? ·?
示例2?
?
?各類調用自己的私有成員?
?
package com.Hwadee;
/**
?*繼承例二
?*各類調用自己的私有成員
?*/
public class Extend {
?
? ? public static void main(String[] args) {
? ? ? ? Car c=new Car();
? ? ? ? Truck t=new Truck();
? ? ? ? c.setName("擎天柱");
? ? ? ? c.setNum(123432);
? ? ? ? String name = c.getName();
? ? ? ? int num = c.getNum();
? ? ? ? System.out.println("名字:"+name+"\n"+"號碼:"+num);
? ? ? ? t.setCapacity(1000);
? ? ? ? int capacity = t.getCapacity();
? ? ? ? System.out.println("容量:"+capacity);
? ? }
?
}
class Car{
? ? private int num;
? ? private String name;
? ? public Car() {
? ? }
? ? public Car(int num, String name) {
? ? ? ? this.num = num;
? ? ? ? this.name = name;
? ? }
? ? public int getNum() {
? ? ? ? return num;
? ? }
? ? public void setNum(int num) {
? ? ? ? this.num = num;
? ? }
? ? public String getName() {
? ? ? ? return name;
? ? }
? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }
?
}
class Truck extends Car{
? ? private int capacity;
?
? ? public int getCapacity() {
? ? ? ? return capacity;
? ? }
?
? ? public void setCapacity(int capacity) {
? ? ? ? this.capacity = capacity;
? ? }
?
}
?
結果二