1.繼承寫(xiě)法
公共繼承(父類(lèi))
package basicForMando;
public class Animal {
private String name;
private int id;
//構(gòu)造函數(shù) 如果未定義
public Animal(String myName,int myid){
name = myName;
id = myid;
}
public void eat(){
System.out.println(name+"正在吃");
}
public void sleep(){
System.out.println(name+"正在睡");
}
public void introduction(){
System.out.println("大家好!我是"+id+"號(hào)"+name+".");
}
}
繼承公共函數(shù)(子類(lèi))
package basicForMando;
//1.extends 父類(lèi)
public class Penguin extends Animal {
//2.子類(lèi)構(gòu)造函數(shù)與父類(lèi)構(gòu)造函數(shù)參數(shù)應(yīng)該相同,如果父類(lèi)為隱式構(gòu)造函數(shù),子類(lèi)可不定義
public Penguin(String myName, int myid) {
super(myName, myid);
}
}
2.super&this
1.我們可以通過(guò)super關(guān)鍵字來(lái)實(shí)現(xiàn)對(duì)父類(lèi)成員的訪問(wèn),用來(lái)引用當(dāng)前對(duì)象的父類(lèi)。
2.super用法
* 方法super.a();
* 在子類(lèi)構(gòu)造函數(shù)寫(xiě)構(gòu)造函數(shù)super();
* 變量super.b
package basicForMando;
/*
* 父類(lèi)
* 成員變量 count
* 構(gòu)造函數(shù) 有參 無(wú)參
* 普通函數(shù) value()
* */
class Fu{
String str="父類(lèi)默認(rèn)";
int number = 3;
//父類(lèi)構(gòu)造函數(shù)
Fu() {
// TODO Auto-generated constructor stub
System.out.println("fu constructor run ..無(wú)參父類(lèi).." );
}
public void value() {
// TODO Auto-generated method stub
str ="父類(lèi)value方法內(nèi)";
}
Fu(int x){
System.out.println("fu 構(gòu)造函數(shù) ..int.." + x );
}
}
class Zi extends Fu{
//子類(lèi)構(gòu)造函數(shù) 寫(xiě)super
Zi(){
System.out.println("zi 構(gòu)造函數(shù) ..無(wú)參.."+super.number );
};
Zi(int x){
super(x+1);
System.out.println("zi 構(gòu)造函數(shù) ..int.." + x);
};
public void value() {
str ="子類(lèi)方法內(nèi)";
System.out.println("str子="+str);
super.value(); //調(diào)用父類(lèi)的方法
System.out.println("str="+str); //這塊str 為什么是父類(lèi)的呀
System.out.println("父類(lèi)str="+super.str);
}
}
//繼承
public class ExtendsDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Zi z= new Zi();
// Zi z= new Zi(1);
z.value();
}
}
print(輸出)
fu constructor run ..無(wú)參父類(lèi)..
zi 構(gòu)造函數(shù) ..無(wú)參..3
str子=子類(lèi)方法內(nèi)
str=父類(lèi)value方法內(nèi)
父類(lèi)str=父類(lèi)value方法內(nèi)
3.this關(guān)鍵字:指向自己的引用。
3.implements (多繼承的特性)
使用 implements 關(guān)鍵字可以變相的使java具有多繼承的特性,使用范圍為類(lèi)繼承接口的情況,可以同時(shí)繼承多個(gè)接口(接口跟接口之間采用逗號(hào)分隔)。
public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B { }
4.final 修飾
final 關(guān)鍵字聲明類(lèi)可以把類(lèi)定義為不能繼承的,即最終類(lèi);或者用于修飾方法,該方法不能被子類(lèi)重寫(xiě):
//聲明類(lèi)
final class 類(lèi)名 {//類(lèi)體}
//聲明方法
修飾符(public/private/default/protected) final 返回值類(lèi)型 方法名(){
//方法體
}
注:實(shí)例變量也可以被定義為 final,被定義為 final 的變量不能被修改。被聲明為 final 類(lèi)的方法自動(dòng)地聲明為 final,但是實(shí)例變量并不是 final
5.重載和重寫(xiě)
class Animal{
public void move(){
System.out.println("動(dòng)物可以移動(dòng)");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 對(duì)象
Animal b = new Dog(); // Dog 對(duì)象
a.move();// 執(zhí)行 Animal 類(lèi)的方法
b.move();//執(zhí)行 Dog 類(lèi)的方法
}
}