复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89package com.tingle.j2se.basic; /** * Created on 2020/4/20 17:54 * * 多态的介绍,抽象介绍、instanceof 用法简介 * @author Tingle */ public class Example2 { public static void main(String[] args) { create(new Cat()); // 以 Cat 对象调用 show 方法 create(new Dog()); // 以 Dog 对象调用 show 方法 Animal a = new Cat(); // 向上转型 a.eat(); // 调用的是 Cat 的 eat Cat c = (Cat)a; // 向下转型 c.speak(); // 调用的是 Cat 的 work } public static void create(Animal animal){ animal.eat(); //判断是否属于Cat/Dog类型 if(animal instanceof Cat){ Cat cat = (Cat) animal; cat.speak(); }else if (animal instanceof Dog){ Dog dog = (Dog) animal; dog.speak(); dog.work(); } } } /** * 抽象类 * 1、用abstract关键字来表达的类----其表达形式为:(public)abstract class 类名{} * 2、抽象类不能被实例化----也就是说我们没法直接new 一个抽象类。抽象类本身就代表了一个类型,无法 * 确定为一个具体的对象,所以不能实例化就合乎情理了,只能有它的继承类实例化。 * 3、抽象类虽然不能被实例化,但有自己的构造方法 * 4、抽象类与接口(interface)有很大的不同之处,接口中不能有实例方法去实现业务逻辑,而抽象类 * 中可以有实例方法,并实现业务逻辑,比如我们可以在抽象类中创建和销毁一个线程池。 * 5、抽象类不能使用final关键字修饰----因为final修饰的类是无法被继承,而对于抽象类来说就是 * 需要通过继承去实现抽象方法,这又会产生矛盾。 * 总结:抽象类可以理解未未具体定义功能的类,后续需要开发自定义的子类继承父类,并实现父类的抽象方法;优势:同一类对象可以定义一个抽象类,抽出公共方法为抽象方法 */ abstract class Animal{ /** * 抽象方法 * 1、抽象方法跟普通方法是有区别的,它没有自己的主体(没有{}包起来的 * 业务逻辑),跟接口中的方法有点类似。所以我们没法直接调用抽象方法 * 2、抽象方法不能用private修饰,因为抽象方法必须被子类实现(覆写),而private权限对于子类来 * 说是不能访问的,所以就会产生矛盾 * 3、抽象方法也不能用static修饰,试想一下,如果用static修饰了,那么我们可以直接通过类名调 * 用,而抽象方法压根就没有主体,没有任何业务逻辑,这样就毫无意义了 */ abstract void eat(); } class Cat extends Animal{ @Override void eat() { System.out.println("fish"); } void speak(){ System.out.println("miao~~"); } } class Dog extends Animal{ @Override void eat() { System.out.println("bone"); } void speak(){ System.out.println("Wang Wang 。。。"); } void work(){ System.out.println("watch door"); } }
最后
以上就是魔幻电话最近收集整理的关于【Example2】多态的介绍,抽象介绍、instanceof 用法简介的全部内容,更多相关【Example2】多态的介绍,抽象介绍、instanceof内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复