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