java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...
一個(gè)簡(jiǎn)單的例子理解java繼承、成員函數(shù)重寫(xiě)、類(lèi)型轉(zhuǎn)換
1、繼承簡(jiǎn)介
舉一個(gè)簡(jiǎn)單的例子:筆分為很多種,比如毛筆、鋼筆、圓珠筆等等,這些筆都有一些相同的屬性比如長(zhǎng)度、筆跡的粗細(xì)等等;但他們也有不同的特點(diǎn),比如他們的用途(毛筆可以寫(xiě)對(duì)聯(lián)、鋼筆可以寫(xiě)作業(yè)等等)等。這時(shí)候要編寫(xiě)一個(gè)程序用類(lèi)表示這些筆,一般的方法就必須把各種筆的眾多相同的屬性重復(fù)寫(xiě)很多次,就很浪費(fèi)時(shí)間。這時(shí)候就可以借助繼承,先寫(xiě)一個(gè)擁有所有筆共同點(diǎn)的類(lèi),再分別寫(xiě)每一種筆的類(lèi),讓其繼承這個(gè)共同類(lèi)即可。
先寫(xiě)一個(gè)筆的類(lèi):
public class pen {
//定義長(zhǎng)度
private int length;
//定義品牌
private String brand;
//定義筆跡的粗細(xì)
private int width;
public void setLength(int l){
length = l;
}
public int getLength(){
return length;
}
public void setBrand(String b){
brand = b;
}
public String getBrand(){
return brand;
}
public void setWidth(int w){
width = w;
}
public int getWidth(){
return width;
}
public void write(){
System.out.println("寫(xiě)了一個(gè)字");
}
}
這時(shí)候?qū)懨P的類(lèi)的時(shí)候,對(duì)于筆的共同屬性就只需要先用extends關(guān)鍵字繼承,再寫(xiě)其特有的屬性和方法即可。(繼承的格式class 子類(lèi)/派生類(lèi) extends 父類(lèi)/基類(lèi)/超類(lèi) ,基類(lèi)/父類(lèi)/超類(lèi) 就是擁有共同屬性和方法的類(lèi), 子類(lèi)/派生類(lèi)則是從父類(lèi)繼承過(guò)來(lái),擁有它自己特有的屬性和方法的類(lèi)。)
public class inkBrush extends pen{
public void writeCouplet(){
System.out.println("寫(xiě)了一副對(duì)聯(lián)");
}
}
同樣,鋼筆類(lèi)也只需先繼承再寫(xiě)鋼筆獨(dú)有的屬性和方法。
public class pencil extends pen{
public void doHomework(){
System.out.println("完成了一次作業(yè)。");
}
}
2、關(guān)于類(lèi)類(lèi)里面可以被繼承的部分
Java里面的子類(lèi)可以繼承父類(lèi)的所有屬性和方法,只不過(guò)不能直接訪問(wèn)私有成員,默認(rèn)的成員不能跨包繼承。
3、關(guān)于方法的重寫(xiě)
不同的筆都可以寫(xiě)字,但不同的筆寫(xiě)出的子是不一樣的。這時(shí)候就需要在各種筆的子類(lèi)里重寫(xiě)write方法,如下所示:
public class pencil extends pen{
public void write(){
System.out.println("用鋼筆寫(xiě)了一個(gè)字");
}
}
子類(lèi)里重寫(xiě)的方法必須和父類(lèi)里的方法的關(guān)鍵字、方法名、方法里的參數(shù)個(gè)數(shù)以及每一個(gè)參數(shù)的屬性都必須相同。不然就成了方法的重載。
3、關(guān)于類(lèi)的類(lèi)型轉(zhuǎn)換
每種筆都可以用來(lái)寫(xiě)字。當(dāng)一個(gè)學(xué)生用鋼筆寫(xiě)字的時(shí)候,我們可以說(shuō)“他在用鋼筆寫(xiě)字”,也可以說(shuō)“他在用筆寫(xiě)字“。用類(lèi)表示如下:
寫(xiě)一個(gè)學(xué)生類(lèi):
public class student {
public void write(pen p){
p.write();
}
}
主函數(shù)里面:
public class Manage {
public static void main(String [] args){
student stu1 = new student();
pencil p1 = new pencil();
stu1.write(p1);
}
}
學(xué)生類(lèi)的doHomework方法里的參數(shù)是pen的類(lèi)型,主函數(shù)里student對(duì)象stu1的doHomework方法里的參數(shù)是pencil,但并沒(méi)有報(bào)錯(cuò)。這說(shuō)明pencil自動(dòng)轉(zhuǎn)換為了pen對(duì)象。
自動(dòng)類(lèi)型轉(zhuǎn)換只能從子類(lèi)轉(zhuǎn)換為父類(lèi),不能從父類(lèi)轉(zhuǎn)換為子類(lèi),從父類(lèi)轉(zhuǎn)換為子類(lèi)必須使用強(qiáng)制類(lèi)型抓換。
一個(gè)學(xué)生在寫(xiě)作業(yè)的時(shí)候,我們可以說(shuō)“他用鋼筆寫(xiě)作業(yè)”,也可以不用說(shuō)明他用什么筆寫(xiě)作業(yè),直接說(shuō)“他用筆寫(xiě)作業(yè)”。用類(lèi)表示如下:
寫(xiě)一個(gè)學(xué)生類(lèi):
public class student {
public void doHomework(pen p){
p.doHomework();
}
}
如果按照上述寫(xiě)法會(huì)報(bào)錯(cuò),這是因?yàn)閜en這個(gè)類(lèi)沒(méi)有doHomework的方法,doHomework時(shí)pen的派生類(lèi)pencil里的方法。著也說(shuō)明pen類(lèi)的對(duì)象無(wú)法轉(zhuǎn)換成pencil類(lèi)對(duì)象。這時(shí)候可以采用強(qiáng)制類(lèi)型轉(zhuǎn)換(強(qiáng)制類(lèi)型轉(zhuǎn)換的格式: 轉(zhuǎn)換前的類(lèi)名 轉(zhuǎn)換前的對(duì)象名 = (轉(zhuǎn)換后的類(lèi)名)需轉(zhuǎn)換的對(duì)象名)。如下所示:
public class student {
public void doHomework(pencil p){
p.doHomework();
}
}
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: hp战66怎么重装 如何重新安装HP战6
- 下一篇: java调用接口失败重调_java 接口