一篇文章帶你入門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的更多內容!

推薦閱讀: