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