当前位置:网站首页>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 !
边栏推荐
猜你喜欢
涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
C#/VB.NET 给PDF文档添加文本/图像水印
AvL树的实现
Nuc11 cheetah Canyon setting U disk startup
Penetration test information collection - WAF identification
视频化全链路智能上云?一文详解什么是阿里云视频云「智能媒体生产」
Understanding disentangling in β- VAE paper reading notes
Mathematics in machine learning -- common probability distribution (XIII): Logistic Distribution
On AAE
图之广度优先遍历
随机推荐
能源行业的数字化“新”运维
Penetration test information collection - basic enterprise information
涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
About NPM install error 1
基于蝴蝶种类识别
R语言使用dt函数生成t分布密度函数数据、使用plot函数可视化t分布密度函数数据(t Distribution)
Implementation of AVL tree
[Matlab] Simulink 同一模块的输入输出的变量不能同名
【中山大学】考研初试复试资料分享
Airiot IOT platform enables the container industry to build [welding station information monitoring system]
十、进程管理
Reproduce ThinkPHP 2 X Arbitrary Code Execution Vulnerability
POJ 2208 six lengths of tetrahedron are known, and the volume is calculated
R语言dplyr包进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组均值(mean)
About static type, dynamic type, ID, instancetype
[Sun Yat sen University] information sharing of postgraduate entrance examination and re examination
Binary search tree
Execution process of MySQL query request - underlying principle
44 colleges and universities were selected! Publicity of distributed intelligent computing project list
44所高校入选!分布式智能计算项目名单公示