Java基礎 快速學習(三)
注意:本系列部落格是在作者已經有一年多的C++經驗的基礎上學習Java的個人總結,可能並不適合所有看到這篇部落格的人。
一、繼承
Java繼承的話套路和c++大體是一樣的...,當然如果路過的盆友不懂繼承機制以及為什麼要有繼承的話請點選這裡->https://www.baidu.com/
直接上示例程式碼,讀者可以大致看看->然後在跟著程式碼後面的解釋 ->再次精讀
//base.java
package inherit;
public class base
{
private int id;
protected int math;
protected int Chinese;
public base(int id) //有參構造器
{
this.id=id; //this 用來指向自身 這裡用來區分 形參的id與類的成員id
}
public int re_id()
{
return id;
}
public int total_points() //總分
{
return math+Chinese;
}
}
//boy.java
package inherit;
public class boy extends base //用關鍵字 extends 繼承
{
private int circuit;
public boy(int id) //建構函式
{
super( id); //用super呼叫父類的構造器 傳入引數
}
public int total_points()
{
int a=super.total_points(); //用surper呼叫父類的方法
return a+circuit;
}
public void set_cir(int g)
{
circuit=g;
}
public void set_math_ch(int ma,int ch)
{
math=ma;
Chinese=ch;
}
public void set_math_ch(int ma)
{
Chinese=60;
math=ma;
}
public static void main(String[] args)
{
boy b =new boy(1);
System.out.println(b.re_id()); //使用基類的方法
b.set_math_ch(75); //使用只有一個引數的過載函式
b.set_cir(80);
System.out.println(b.total_points());
}
}
1.首先java中是通過關鍵字extends實現繼承的。值得注意的的是在Java中實現的繼承機制同C++中的公有繼承一樣!並且java不可以多繼承!
2.構造機制和c++略有不同,在C++中如果父類的構造器是有引數的,那麼在子類中的構造器應該通過成員初始化列表的的語法來完成引數傳遞的工作。在Java中通過super這個關鍵字在子類構造器中顯示呼叫並傳入引數!
3.Java支援成員函式過載和子類重寫父類的函式。但是不支援直接像c++中那樣進行預設引數,不過還是有對策的,可以利用過載巧妙的實現預設引數,具體可以參考上面程式碼中的set_math_ch函式!
4.this的用法同C++!不過有種很通用的技巧,用於方法內的區域性變數與物件的資料域變數同名的情況!用this可以起到表示當前物件的資料域變數的作用。可以參考程式碼中的 this.id=id;
5.super這個關鍵字用法可以總結如下
- 【1】呼叫父類的構造方法;
- 【2】呼叫父類的方法(子類覆蓋了父類的方法時);
- 【3】訪問父類的資料域(可以這樣用但沒有必要這樣用)
- 6.final關鍵字上一篇文章中提到過他相當於c++中的const 他還有另外的用法 就是 宣告類可以把類定義為不能繼承的,即最終類;或者用於修飾方法,該方法不能被子類重寫。
- 7.當然也支援父類指向子類 如 base b=new boy();
- 8.最後還有一點就是java中所有類都是Object的直接或者間接之類。如果一個類沒有顯示的申明他的父類是誰,那麼他的父類就是Object。
- 二、抽象類
- 1.抽象類除了不能例項化物件之外,類的其它功能依然存在,成員變數、成員方法和構造方法的訪問方式和普通類一樣。由於抽象類不能例項化物件,所以抽象類必須被繼承,才能被使用。
- 2.使用Abstract關鍵字來宣告這個類為抽象類,Abstract關鍵字同樣可以用來宣告抽象方法,抽象方法只包含一個方法名,而沒有方法體。抽象方法沒有定義,方法名後面直接跟一個分號,而不是花括號。
- 3.抽象類的意義,這裡只簡單的總結一下,等學習完Java類的全部語法在進行系統的總結。
- 在物件導向的程式設計中,主要思想之一就是用類來描述這個世界的任何事物。不過這個世界的事物是可以歸類的,比如貓、狗、大象。又比如我們鍵盤中的鍵 如space鍵 它既是空格鍵又是很多播放器的暫停鍵等等。我們可以按照歸類他有聯絡的事物抽象出來,寫成抽象類。抽象類並不指向特定的某個事務,他是抽象的,他代表著一類事物共有的特徵!
- 4.下面用一個例項程式碼說明,比如某學校要收教材費,有高一到高三3個年級。教務辦發出通知讓各個年級彙總他們的教材費。那麼這個類就可以做如下抽象
-
/*抽象類*/ package abstraction; public abstract class abstraction_jw { protected int ch; protected int math; protected int Eng; protected int ch_ma_en_money() { return ch+math+Eng; } public abstract int all_money(); }
/*高一類*/ package abstraction; public class one extends abstraction_jw { int history; //高一有歷史課 public one() { //高一書的定價 ch=50; math=40; Eng=70; history=30; } @Override public int all_money() { return ch_ma_en_money()+history; } }
/*高二類*/ package abstraction; public class tow extends abstraction_jw { int physics; //高二有物理課 public tow() { //高二的書的定價 math=80; ch=70; Eng=60; physics=100; } @Override public int all_money() { // TODO Auto-generated method stub return ch_ma_en_money()+physics; } }
/*入口*/ package abstraction; public class jw_main { public static void main(String[] args) { abstraction_jw one_m=new one(); abstraction_jw tow_m=new tow(); System.out.println("高一:"+one_m.all_money()); System.out.println("高二:"+tow_m.all_money()); } }
----------------------------------------------------------------
本系列文章:
相關文章
- Java基礎 快速學習(二)Java
- Java基礎 快速學習(四)Java
- C++ -> Java快速學習-基礎C++Java
- Java基礎學習Java
- JAVA學習--JAVA基礎(一)Java
- 零基礎快速學習Java技術的方法整理Java
- java基礎的學習Java
- Flutter 學習(三) dart基礎FlutterDart
- 【Java 反射學習】Java 反射基礎Java反射
- [Java 反射學習] Java 反射基礎Java反射
- Kotlin 基礎學習+快速實踐Kotlin
- Oracle學習快速入門基礎教程Oracle
- java基礎學習(目錄)Java
- java語言基礎學習Java
- java基礎學習之--XMLJavaXML
- Java基礎學習筆記Java筆記
- Java開發學習(三)----Bean基礎配置及其作用範圍JavaBean
- java基礎學習之三:方法的過載和重寫Java
- 學習java需要什麼基礎Java
- java基礎學習:JavaWeb之ServletJavaWebServlet
- JAVA基礎學習篇之反射Java反射
- Java學習之基礎語法Java
- java webService 零基礎學習JavaWeb
- Java基礎-學習筆記05Java筆記
- Java基礎-學習筆記06Java筆記
- Java基礎-學習筆記07Java筆記
- Java基礎-學習筆記04Java筆記
- Java基礎-學習筆記17Java筆記
- MySQL學習(三) SQL基礎查詢MySql
- Java 基礎學習系列一 —— Java 主要特性Java
- Java學習之基礎語法練習Java
- Java零基礎小白必看的學習路線圖,快速入門!Java
- 如何快速打好Java基礎?Java
- 零基礎輕鬆入門——JAVA基礎學習Java
- java基礎學習_io流之FileInputStreamJava
- java入門基礎學習----泛型Java泛型
- java基礎學習:JavaWeb之JSPJavaWebJS
- Java基礎類String學習分析Java