一篇文章帶你入門(mén)java面向?qū)ο?/h1>
更新時(shí)間:2021年08月04日 17:30:28 作者:wwwzhouzy
這篇文章主要介紹了Java語(yǔ)言面向?qū)ο缶幊趟枷胫?lèi)與對(duì)象實(shí)例詳解,還是十分不錯(cuò)的,這里給大家分享下,需要的朋友可以參考,希望能幫到你
一、繼承
繼承就是子類(lèi)繼承父類(lèi)的特征和行為,使得子類(lèi)對(duì)象(實(shí)例)具有父類(lèi)的實(shí)例域和方法,或子類(lèi)從父類(lèi)繼承方法,使得子類(lèi)具有父類(lèi)相同的行為
本章就以人、學(xué)生、老師作為例子。學(xué)生和老師都繼承人這個(gè)對(duì)象,都有人的特征和行為,人就是父類(lèi),老師和學(xué)生就是子類(lèi)
示例:
人類(lèi):
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());
}
}
學(xué)生:
package com.zhouzy.base.t7;
public class Student extends Person{
/**
* 這就是重寫(xiě)
*/
@Override
public void action(Person p){
System.out.println("這是學(xué)生的行為");
System.out.println("Student的名字:"+p.getName()); //繼承了父類(lèi)的屬性
}
}
老師:
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());
}
}
測(cè)試:
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);
}
}
結(jié)果:
這是學(xué)生的行為
Student的名字:張三
這是老師的行為
Teacher的名字:劉老師
二、重載
重載是在一個(gè)類(lèi)里面方法名相同,但返回值或者參數(shù)類(lèi)型或個(gè)數(shù)不同,比如
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";
}
重寫(xiě)和重載是java多態(tài)的一種體現(xiàn)
三、接口
接口(英文:Interface),在JAVA編程語(yǔ)言中是一個(gè)抽象類(lèi)型,是抽象方法的集合,接口通常以interface來(lái)聲明。一個(gè)類(lèi)通過(guò)繼承接口的方式,從而來(lái)繼承接口的抽象方法。
接口并不是類(lèi),編寫(xiě)接口的方式和類(lèi)很相似,但是它們屬于不同的概念。類(lèi)描述對(duì)象的屬性和方法。接口則包含類(lèi)要實(shí)現(xiàn)的方法。
除非實(shí)現(xiàn)接口的類(lèi)是抽象類(lèi),否則該類(lèi)要定義接口中的所有方法。
接口無(wú)法被實(shí)例化,但是可以被實(shí)現(xiàn)。一個(gè)實(shí)現(xiàn)接口的類(lèi),必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類(lèi)。另外,在 Java 中,接口類(lèi)型可用來(lái)聲明一個(gè)變量,他們可以成為一個(gè)空指針,或是被綁定在一個(gè)以此接口實(shí)現(xiàn)的對(duì)象。
1、接口與類(lèi)相似點(diǎn):
一個(gè)接口可以有多個(gè)方法。
接口文件保存在 .java 結(jié)尾的文件中,文件名使用接口名。
接口的字節(jié)碼文件保存在 .class 結(jié)尾的文件中。
接口相應(yīng)的字節(jié)碼文件必須在與包名稱(chēng)相匹配的目錄結(jié)構(gòu)中。
2、接口與類(lèi)的區(qū)別:
接口不能用于實(shí)例化對(duì)象。
接口沒(méi)有構(gòu)造方法。
接口中所有的方法必須是抽象方法,Java 8 之后 接口中可以使用 default 關(guān)鍵字修飾的非抽象方法。
接口不能包含成員變量,除了 static 和 final 變量。
接口不是被類(lèi)繼承了,而是要被類(lèi)實(shí)現(xiàn)。
接口支持多繼承。
3、語(yǔ)法
[可見(jiàn)度] interface 接口名稱(chēng) [extends 其他的接口名] {
// 聲明變量
// 抽象方法
}
示例:
package com.zhouzy.base.t2;
public interface Car {
public void move();
}
實(shí)現(xiàn)接口的類(lèi),必須實(shí)現(xiàn)接口里面的方法
package com.zhouzy.base.t2;
public class Baoma implements Car{
@Override
public void move() {
System.out.println("我是寶馬,時(shí)速最高200公里每小時(shí),牛擦吧!");
}
}
四、枚舉
1、定義
Java 枚舉是一個(gè)特殊的類(lèi),一般表示一組常量,比如一年的 4 個(gè)季節(jié),一個(gè)年的 12 個(gè)月份,一個(gè)星期的 7 天,方向有東南西北等。
Java 枚舉類(lèi)使用 enum 關(guān)鍵字來(lái)定義,各個(gè)常量使用逗號(hào) , 來(lái)分割。
例如定義一個(gè)顏色的枚舉類(lèi)。
enum Color
{
RED, GREEN, BLUE;
}
示例:
enum Color
{
RED, GREEN, BLUE;
}
public class Test
{
// 執(zhí)行輸出結(jié)果
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
}
}
結(jié)果:
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);
}
}
}
結(jié)果:
RED
GREEN
BLUE
3、在 switch 中使用枚舉類(lèi)
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("藍(lán)色");
break;
}
}
}
結(jié)果:
藍(lán)色
總結(jié)
本篇文章就到這里了嗎,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
-
關(guān)于SpringBoot自定義條件注解與自動(dòng)配置
這篇文章主要介紹了關(guān)于SpringBoot自定義條件注解與自動(dòng)配置,Spring Boot的核心功能就是為整合第三方框架提供自動(dòng)配置,而本文則帶著大家實(shí)現(xiàn)了自己的自動(dòng)配置和Starter,需要的朋友可以參考下 2023-07-07
-
SpringBoot3集成WebSocket的全過(guò)程
WebSocket通過(guò)一個(gè)TCP連接在客戶端和服務(wù)器之間建立一個(gè)全雙工、雙向的通信通道,使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,本文給大家介紹了SpringBoot3集成WebSocket的全過(guò)程,并有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下 2024-05-05
-
三步輕松實(shí)現(xiàn)Java的SM2前端加密后端解密
SM2算法和RSA算法都是公鑰密碼算法,SM2算法是一種更先進(jìn)安全的算法,在我們國(guó)家商用密碼體系中被用來(lái)替換RSA算法,這篇文章主要給大家介紹了關(guān)于如何通過(guò)三步輕松實(shí)現(xiàn)Java的SM2前端加密后端解密的相關(guān)資料,需要的朋友可以參考下 2024-01-01
-
swing組件JScrollPane滾動(dòng)條實(shí)例代碼
這篇文章主要介紹了swing組件JScrollPane滾動(dòng)條實(shí)例代碼,分享了兩個(gè)相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下 2018-02-02
-
java開(kāi)發(fā)RocketMQ生產(chǎn)者高可用示例詳解
這篇文章主要為大家介紹了java開(kāi)發(fā)RocketMQ生產(chǎn)者高可用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪 2022-08-08
-
詳解Maven settings.xml配置(指定本地倉(cāng)庫(kù)、阿里云鏡像設(shè)置)
這篇文章主要介紹了詳解Maven settings.xml配置(指定本地倉(cāng)庫(kù)、阿里云鏡像設(shè)置),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧 2018-12-12
-
Java報(bào)錯(cuò)Java.net.SocketTimeoutException的幾種解決方法
在 Java 網(wǎng)絡(luò)編程中,SocketTimeoutException 通常表示在進(jìn)行網(wǎng)絡(luò)操作時(shí),等待響應(yīng)的時(shí)間超過(guò)了設(shè)定的超時(shí)時(shí)間,本文將深入探討 Java.net.SocketTimeoutException 的問(wèn)題,并為開(kāi)發(fā)者和環(huán)境配置者提供詳細(xì)的解決方案,需要的朋友可以參考下 2024-10-10
最新評(píng)論
一、繼承
繼承就是子類(lèi)繼承父類(lèi)的特征和行為,使得子類(lèi)對(duì)象(實(shí)例)具有父類(lèi)的實(shí)例域和方法,或子類(lèi)從父類(lèi)繼承方法,使得子類(lèi)具有父類(lèi)相同的行為
本章就以人、學(xué)生、老師作為例子。學(xué)生和老師都繼承人這個(gè)對(duì)象,都有人的特征和行為,人就是父類(lèi),老師和學(xué)生就是子類(lèi)
示例:
人類(lèi):
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()); } }
學(xué)生:
package com.zhouzy.base.t7; public class Student extends Person{ /** * 這就是重寫(xiě) */ @Override public void action(Person p){ System.out.println("這是學(xué)生的行為"); System.out.println("Student的名字:"+p.getName()); //繼承了父類(lèi)的屬性 } }
老師:
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()); } }
測(cè)試:
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); } }
結(jié)果:
這是學(xué)生的行為
Student的名字:張三
這是老師的行為
Teacher的名字:劉老師
二、重載
重載是在一個(gè)類(lèi)里面方法名相同,但返回值或者參數(shù)類(lèi)型或個(gè)數(shù)不同,比如
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"; }
重寫(xiě)和重載是java多態(tài)的一種體現(xiàn)
三、接口
接口(英文:Interface),在JAVA編程語(yǔ)言中是一個(gè)抽象類(lèi)型,是抽象方法的集合,接口通常以interface來(lái)聲明。一個(gè)類(lèi)通過(guò)繼承接口的方式,從而來(lái)繼承接口的抽象方法。
接口并不是類(lèi),編寫(xiě)接口的方式和類(lèi)很相似,但是它們屬于不同的概念。類(lèi)描述對(duì)象的屬性和方法。接口則包含類(lèi)要實(shí)現(xiàn)的方法。
除非實(shí)現(xiàn)接口的類(lèi)是抽象類(lèi),否則該類(lèi)要定義接口中的所有方法。
接口無(wú)法被實(shí)例化,但是可以被實(shí)現(xiàn)。一個(gè)實(shí)現(xiàn)接口的類(lèi),必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類(lèi)。另外,在 Java 中,接口類(lèi)型可用來(lái)聲明一個(gè)變量,他們可以成為一個(gè)空指針,或是被綁定在一個(gè)以此接口實(shí)現(xiàn)的對(duì)象。
1、接口與類(lèi)相似點(diǎn):
一個(gè)接口可以有多個(gè)方法。
接口文件保存在 .java 結(jié)尾的文件中,文件名使用接口名。
接口的字節(jié)碼文件保存在 .class 結(jié)尾的文件中。
接口相應(yīng)的字節(jié)碼文件必須在與包名稱(chēng)相匹配的目錄結(jié)構(gòu)中。
2、接口與類(lèi)的區(qū)別:
接口不能用于實(shí)例化對(duì)象。
接口沒(méi)有構(gòu)造方法。
接口中所有的方法必須是抽象方法,Java 8 之后 接口中可以使用 default 關(guān)鍵字修飾的非抽象方法。
接口不能包含成員變量,除了 static 和 final 變量。
接口不是被類(lèi)繼承了,而是要被類(lèi)實(shí)現(xiàn)。
接口支持多繼承。
3、語(yǔ)法
[可見(jiàn)度] interface 接口名稱(chēng) [extends 其他的接口名] { // 聲明變量 // 抽象方法 }
示例:
package com.zhouzy.base.t2; public interface Car { public void move(); }
實(shí)現(xiàn)接口的類(lèi),必須實(shí)現(xiàn)接口里面的方法
package com.zhouzy.base.t2; public class Baoma implements Car{ @Override public void move() { System.out.println("我是寶馬,時(shí)速最高200公里每小時(shí),牛擦吧!"); } }
四、枚舉
1、定義
Java 枚舉是一個(gè)特殊的類(lèi),一般表示一組常量,比如一年的 4 個(gè)季節(jié),一個(gè)年的 12 個(gè)月份,一個(gè)星期的 7 天,方向有東南西北等。
Java 枚舉類(lèi)使用 enum 關(guān)鍵字來(lái)定義,各個(gè)常量使用逗號(hào) , 來(lái)分割。
例如定義一個(gè)顏色的枚舉類(lèi)。
enum Color { RED, GREEN, BLUE; }
示例:
enum Color { RED, GREEN, BLUE; } public class Test { // 執(zhí)行輸出結(jié)果 public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } }
結(jié)果:
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); } } }
結(jié)果:
RED
GREEN
BLUE
3、在 switch 中使用枚舉類(lèi)
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("藍(lán)色"); break; } } }
結(jié)果:
藍(lán)色
總結(jié)
本篇文章就到這里了嗎,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
關(guān)于SpringBoot自定義條件注解與自動(dòng)配置
這篇文章主要介紹了關(guān)于SpringBoot自定義條件注解與自動(dòng)配置,Spring Boot的核心功能就是為整合第三方框架提供自動(dòng)配置,而本文則帶著大家實(shí)現(xiàn)了自己的自動(dòng)配置和Starter,需要的朋友可以參考下2023-07-07SpringBoot3集成WebSocket的全過(guò)程
WebSocket通過(guò)一個(gè)TCP連接在客戶端和服務(wù)器之間建立一個(gè)全雙工、雙向的通信通道,使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡(jiǎn)單,本文給大家介紹了SpringBoot3集成WebSocket的全過(guò)程,并有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-05-05三步輕松實(shí)現(xiàn)Java的SM2前端加密后端解密
SM2算法和RSA算法都是公鑰密碼算法,SM2算法是一種更先進(jìn)安全的算法,在我們國(guó)家商用密碼體系中被用來(lái)替換RSA算法,這篇文章主要給大家介紹了關(guān)于如何通過(guò)三步輕松實(shí)現(xiàn)Java的SM2前端加密后端解密的相關(guān)資料,需要的朋友可以參考下2024-01-01swing組件JScrollPane滾動(dòng)條實(shí)例代碼
這篇文章主要介紹了swing組件JScrollPane滾動(dòng)條實(shí)例代碼,分享了兩個(gè)相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02java開(kāi)發(fā)RocketMQ生產(chǎn)者高可用示例詳解
這篇文章主要為大家介紹了java開(kāi)發(fā)RocketMQ生產(chǎn)者高可用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08詳解Maven settings.xml配置(指定本地倉(cāng)庫(kù)、阿里云鏡像設(shè)置)
這篇文章主要介紹了詳解Maven settings.xml配置(指定本地倉(cāng)庫(kù)、阿里云鏡像設(shè)置),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Java報(bào)錯(cuò)Java.net.SocketTimeoutException的幾種解決方法
在 Java 網(wǎng)絡(luò)編程中,SocketTimeoutException 通常表示在進(jìn)行網(wǎng)絡(luò)操作時(shí),等待響應(yīng)的時(shí)間超過(guò)了設(shè)定的超時(shí)時(shí)間,本文將深入探討 Java.net.SocketTimeoutException 的問(wèn)題,并為開(kāi)發(fā)者和環(huán)境配置者提供詳細(xì)的解決方案,需要的朋友可以參考下2024-10-10