一篇文章帶你入門java面向對象
一、繼承
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為
本章就以人、學生、老師作為例子。學生和老師都繼承人這個對象,都有人的特征和行為,人就是父類,老師和學生就是子類
示例:
人類:
package com.zhouzy.base.t7; public class Person { private String name; private String sex; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void action(Person p){ System.out.println("這是人的行為"); System.out.println("person的名字:"+p.getName()); } }
學生:
package com.zhouzy.base.t7; public class Student extends Person{ /** * 這就是重寫 */ @Override public void action(Person p){ System.out.println("這是學生的行為"); System.out.println("Student的名字:"+p.getName()); //繼承瞭父類的屬性 } }
老師:
package com.zhouzy.base.t7; public class Teacher extends Person{ @Override public void action(Person p){ System.out.println("這是老師的行為"); System.out.println("Teacher的名字:"+p.getName()); } }
測試:
package com.zhouzy.base.t7; import org.junit.Test; public class ObjectTest { @Test public void extendsTest(){ Person p1 = new Student(); p1.setName("張三"); p1.action(p1); Person p2 = new Teacher(); p2.setName("劉老師"); p2.action(p2); } }
結果:
這是學生的行為
Student的名字:張三
這是老師的行為
Teacher的名字:劉老師
二、重載
重載是在一個類裡面方法名相同,但返回值或者參數類型或個數不同,比如
private String testOverload(){ return "Overload"; } private String testOverload(String param){ return "Overload"; } private void testOverload(int param){ System.out.println(param); } private String testOverload(String param1,String param2){ return "Overload"; }
重寫和重載是java多態的一種體現
三、接口
接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
接口並不是類,編寫接口的方式和類很相似,但是它們屬於不同的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。
除非實現接口的類是抽象類,否則該類要定義接口中的所有方法。
接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。
1、接口與類相似點:
一個接口可以有多個方法。
接口文件保存在 .java 結尾的文件中,文件名使用接口名。
接口的字節碼文件保存在 .class 結尾的文件中。
接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中。
2、接口與類的區別:
接口不能用於實例化對象。
接口沒有構造方法。
接口中所有的方法必須是抽象方法,Java 8 之後 接口中可以使用 default 關鍵字修飾的非抽象方法。
接口不能包含成員變量,除瞭 static 和 final 變量。
接口不是被類繼承瞭,而是要被類實現。
接口支持多繼承。
3、語法
[可見度] interface 接口名稱 [extends 其他的接口名] { // 聲明變量 // 抽象方法 }
示例:
package com.zhouzy.base.t2; public interface Car { public void move(); }
實現接口的類,必須實現接口裡面的方法
package com.zhouzy.base.t2; public class Baoma implements Car{ @Override public void move() { System.out.println("我是寶馬,時速最高200公裡每小時,牛擦吧!"); } }
四、枚舉
1、定義
Java 枚舉是一個特殊的類,一般表示一組常量,比如一年的 4 個季節,一個年的 12 個月份,一個星期的 7 天,方向有東南西北等。
Java 枚舉類使用 enum 關鍵字來定義,各個常量使用逗號 , 來分割。
例如定義一個顏色的枚舉類。
enum Color { RED, GREEN, BLUE; }
示例:
enum Color { RED, GREEN, BLUE; } public class Test { // 執行輸出結果 public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } }
結果:
RED
2、迭代枚舉元素
enum Color { RED, GREEN, BLUE; } public class MyClass { public static void main(String[] args) { for (Color myVar : Color.values()) { System.out.println(myVar); } } }
結果:
RED
GREEN
BLUE
3、在 switch 中使用枚舉類
enum Color { RED, GREEN, BLUE; } public class MyClass { public static void main(String[] args) { Color myVar = Color.BLUE; switch(myVar) { case RED: System.out.println("紅色"); break; case GREEN: System.out.println("綠色"); break; case BLUE: System.out.println("藍色"); break; } } }
結果:
藍色
總結
本篇文章就到這裡瞭嗎,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!