当前位置:网站首页>Abstract classes and abstract methods
Abstract classes and abstract methods
2022-07-06 18:55:00 【Youth should strive】
Abstract classes and abstract methods
stay java in , Abstract classes cannot produce object instances . When defining abstractions , Need to use abstract keyword , grammar :
[ Permission modifier ] abstract class Class name {
The class body
}
Use abstract The defined classes are called abstract classes , Use abstract The defined methods are called abstract methods , grammar :
[ Permission modifier ] abstract Method return value type Method name ( parameter list );
example : Use abstract classes to simulate “ Go to the mall to buy clothes ” scene
Definition Market class
public abstract class Market {
public String name; // The name of the mall
public String goods; // Name of commodity
public abstract void shop(); // Abstract method , Used to output information
}
Definition TaobaoMarket class
public class TaobaoMarket extends Market {
public void shop() {
System.out.println(name + " online shopping " + goods);
}
}
Definition WallMarket class
public class WallMarket extends Market {
public void shop() {
System.out.println(name + " Physical store purchase " + goods);
}
}
Definition GoShopping class
public class GoShopping {
public static void main(String[] args) {
Market market = new WallMarket(); // Use derived class objects to create abstract class objects
market.name = " Wal-Mart ";
market.goods = " Seven wolves suit ";
market.shop();
market = new TaobaoMarket(); // Use derived class objects to create abstract class objects
market.name = " TaoBao ";
market.goods = " Han Du Yi she flower skirt ";
market.shop();
}
}
The operation results are as follows :
Wal Mart stores buy seven wolves suits
Taobao online shopping Han Du Yi she flower skirt
Process finished with exit code 0
Parent object new Subclass object
Animal b = new Dog();
Above , object b Call the parent class attribute when calling the attribute , Put the object b Call methods of subclasses when calling methods .
class Animal{
}
class Dog extends Animal{
}
public class Test4 {
public static void main(String[] args) {
Animal a = new Animal();
Animal b = new Dog();
System.out.println(a instanceof Animal);
System.out.println(a.getClass());
System.out.println(b.getClass());
// The method of the subclass is used first, so it calls the subclass getClass
System.out.println(a.getClass() .equals(b.getClass()));
}
}
Dog b = new Dog();
Animal b = new Dog();
The results are the same , But there is a difference , have a look Use abstract classes to simulate “ Go to the mall to buy clothes ” scene , If you will Market market = new WallMarket();
Change to WallMarket market = new WallMarket();
, The compiler will report an error , remember : This parent class has two subclasses .
Another example
Define a demo1 class :
package Demo;
public class demo1 {
public static void main(String[] args) {
Teacher Li = new English();
Teacher Yang = new Math();
Li.teaching();
Yang.teaching();
}
}
Define a Teacher class
package Demo;
public abstract class Teacher{
// abstract class
abstract public void teaching(); // Abstract method
}
class Math extends Teacher{
@Override
public void teaching() {
System.out.println(" Let's talk about trigonometric functions !");
}
}
class English extends Teacher{
@Override
public void teaching() {
System.out.println("Good morning class!");
}
}
The operation results are as follows :
Good morning class!
Let's talk about trigonometric functions !
Process finished with exit code 0
Be careful : Abstract classes cannot be instantiated !
Teacher Li = new Teacher(); // The wrong way to write !
The result of error reporting is as follows
java: Demo.Teacher It is abstract. ; Cannot instantiate
What's the use of knowing abstract classes !
边栏推荐
- pychrm社区版调用matplotlib.pyplot.imshow()函数图像不弹出的解决方法
- test about BinaryTree
- Atcoder a mountaineer
- A wearable arm device for night and sleeveless blood pressure measurement [translation]
- 多线程基础:线程基本概念与线程的创建
- R语言使用order函数对dataframe数据进行排序、基于单个字段(变量)进行降序排序(DESCENDING)
- [sword finger offer] 60 Points of N dice
- 2022/02/12
- ORACLE进阶(四)表连接讲解
- Mathematics in machine learning -- common probability distribution (XIII): Logistic Distribution
猜你喜欢
Hongke shares | plate by plate ar application in Beijing Winter Olympics
[Matlab] Simulink 同一模块的输入输出的变量不能同名
Describe the process of key exchange
【中山大学】考研初试复试资料分享
Penetration test information collection - WAF identification
44所高校入选!分布式智能计算项目名单公示
C#/VB.NET 给PDF文档添加文本/图像水印
抽象类与抽象方法
Jushan database was among the first batch of financial information innovation solutions!
Docker安装Redis
随机推荐
Nuc11 cheetah Canyon setting U disk startup
Certains marchés de l'emploi de Shanghai refusent d'embaucher des personnes qui se rétablissent positives à Xinguan
青龙面板最近的库
基于ppg和fft神经网络的光学血压估计【翻译】
Shangsilicon Valley JUC high concurrency programming learning notes (3) multi thread lock
Medical image segmentation
With the implementation of MapReduce job de emphasis, a variety of output folders
朗坤智慧冲刺科创板:年营收4亿 拟募资7亿
Picture zoom Center
How are you in the first half of the year occupied by the epidemic| Mid 2022 summary
2022/02/12
pytorch常见损失函数
Openmv4 learning notes 1 --- one click download, background knowledge of image processing, lab brightness contrast
openmv4 学习笔记1----一键下载、图像处理背景知识、LAB亮度-对比度
A wearable arm device for night and sleeveless blood pressure measurement [translation]
How does crmeb mall system help marketing?
First, look at K, an ugly number
JDBC驱动器、C3P0、Druid和JDBCTemplate相关依赖jar包
Tree-LSTM的一些理解以及DGL代码实现
Stm32+esp8266+mqtt protocol connects onenet IOT platform