一、前言
前面我們學習了多態中的轉型,那么現在我們開始學習抽象類的概述和使用
二、抽象類
生活大多事物是具有抽象含義的,比如我說一個生物,你想不到我說的生物是什么,
在比如說一個動物,你也想不到我說的是什么,這種讓人想不到的概念可以理解就是
抽象類。抽象用abstract修飾
三、抽象方法
對于一個沒有方法體的方法叫做抽象方法,抽象方法是抽象類的核心。抽象類中可以么有
抽象abstract修飾。
四、抽象類的特點
①抽象類中可以有常量,還可以有變量。
②抽象類中可以有/沒有抽象方法,也可以有非抽象方法。
③有抽象方法一點是抽象類,是抽象類不一定有抽象方法。
④抽象類不能直接實例化,但可以通過多態的方式實例化。
⑤子類繼承抽象方法時,必須重寫父類中的所有抽象方法。
注意:若子類不想重寫抽象父類中的父類方法,則可以將子類也定義為抽象類,但是
該子類被其他類繼承時,其他類除了重寫子類中的抽象方法,還要重寫父類中的抽象
方法。(此子類父類時沒把其他類帶入的,而是單純的寫如題)
在Service包下
1
2
3
4
5
6
7
|
package service; public abstract class Animal1 { public abstract void eat(); public abstract void show(); } |
在service下的impl包下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package service.impl; import service.Animal1; public class Dog extends Animal1 { @Override public void eat() { System.out.println( "吃" ); } @Override public void show() { System.out.println( "會看門" ); } public void say(){ System.out.println( "會吠叫" ); } } |
在controller包下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package controller; import service.Animal1; import service.impl.Dog; public class AnimalController1 { public static void main(String[] args) { Animal1 a1= new Dog(); //向上轉型 if (a1 instanceof Dog){ Dog g=(Dog)a1; //向下轉型 g.eat(); g.say(); g.show(); } } } |
創建不同包的作用我前面在這Java面向對象之多態
到此這篇關于Java 抽象類特點總結的文章就介紹到這了,更多相關Java 抽象類特點內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_60719453/article/details/120985441