当前位置:网站首页>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安装Redis
- Splay
- AvL树的实现
- Penetration test information collection - site architecture and construction
- AUTOCAD——中心线绘制、CAD默认线宽是多少?可以修改吗?
- node の SQLite
- Numerical analysis: least squares and ridge regression (pytoch Implementation)
- RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value
- 涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
- Visual Studio Code启动时提示“Code安装似乎损坏。请重新安装。”、标题栏显示“不受支持”信息的解决办法
猜你喜欢
44所高校入选!分布式智能计算项目名单公示
AUTOCAD——中心线绘制、CAD默认线宽是多少?可以修改吗?
[depth first search] Ji suanke: find numbers
Oracle advanced (IV) table connection explanation
Tree-LSTM的一些理解以及DGL代码实现
[depth first search] Ji suanke: a joke of replacement
Noninvasive and cuff free blood pressure measurement for telemedicine [translation]
Use cpolar to build a business website (1)
CSRF vulnerability analysis
287. Find duplicates
随机推荐
用于远程医疗的无创、无袖带血压测量【翻译】
CSRF vulnerability analysis
使用map函数、split函数一行键入多个元素
Breadth first traversal of graph
Solve DoS attack production cases
R语言使用dt函数生成t分布密度函数数据、使用plot函数可视化t分布密度函数数据(t Distribution)
If you have any problems, you can contact me. A rookie ~
Reproduce ThinkPHP 2 X Arbitrary Code Execution Vulnerability
How to improve website weight
Some understandings of tree LSTM and DGL code implementation
Tree-LSTM的一些理解以及DGL代码实现
Describe the process of key exchange
Medical image segmentation
Picture zoom Center
涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
Handwritten online chat system (principle part 1)
Atcoder a mountaineer
Penetration test information collection - basic enterprise information
裕太微冲刺科创板:拟募资13亿 华为与小米基金是股东
Openmv4 learning notes 1 --- one click download, background knowledge of image processing, lab brightness contrast