当前位置:网站首页>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 !
边栏推荐
- Docker installation redis
- 巨杉数据库首批入选金融信创解决方案!
- [the 300th weekly match of leetcode]
- Some recruitment markets in Shanghai refuse to recruit patients with covid-19 positive
- UFIDA OA vulnerability learning - ncfindweb directory traversal vulnerability
- 涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
- Afnetworking framework_ Upload file or image server
- R语言使用dt函数生成t分布密度函数数据、使用plot函数可视化t分布密度函数数据(t Distribution)
- Example of implementing web server with stm32+enc28j60+uip protocol stack
- [depth first search] Ji suanke: find numbers
猜你喜欢

关于npm install 报错问题 error 1

Tree-LSTM的一些理解以及DGL代码实现

Unlock 2 live broadcast themes in advance! Today, I will teach you how to complete software package integration Issues 29-30

MySQL查询请求的执行过程——底层原理

Splay

Describe the process of key exchange

On AAE

Penetration test information collection - CDN bypass

用于远程医疗的无创、无袖带血压测量【翻译】

AUTOCAD——中心线绘制、CAD默认线宽是多少?可以修改吗?
随机推荐
监控界的最强王者,没有之一!
Certains marchés de l'emploi de Shanghai refusent d'embaucher des personnes qui se rétablissent positives à Xinguan
Reptiles have a good time. Are you full? These three bottom lines must not be touched!
安装及管理程序
Wx applet learning notes day01
Introduction and case analysis of Prophet model
10、 Process management
Cocos2d Lua smaller and smaller sample memory game
使用cpolar建立一个商业网站(1)
Video based full link Intelligent Cloud? This article explains in detail what Alibaba cloud video cloud "intelligent media production" is
Introduction to the use of SAP Fiori application index tool and SAP Fiori tools
Collection of penetration test information -- use with nmap and other tools
ORACLE进阶(四)表连接讲解
Xu Xiang's wife Ying Ying responded to the "stock review": she wrote it!
一种用于夜间和无袖测量血压手臂可穿戴设备【翻译】
[Sun Yat sen University] information sharing of postgraduate entrance examination and re examination
Epoll () whether it involves wait queue analysis
上海部分招工市場對新冠陽性康複者拒絕招錄
CSRF vulnerability analysis
JDBC驱动器、C3P0、Druid和JDBCTemplate相关依赖jar包