Java 关于抽象类匿名子类
1 package com.bytezreo.abstractTest;
2
3 /**
4 *
5 * @Description Abstract 关键字使用
6 * @author Bytezero·zhenglei! Email:420498246@qq.com
7 * @version
8 * @date 下午7:17:11
9 * @ 1.abstract:抽象的
10 * 2.abstract可以用来修饰的结构:类,方法
11 *
12 * 3.abstract可以用来修饰类:抽象类
13 * > 此类不能实例化
14 * > 抽象类中一定有构造器,便于子类实例化时调用(子类对象实例化的全过程)
15 * > 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关操作
16 *
17 *
18 *
19 * 4.abstract修饰方法:抽象方法
20 * > 抽象方法只有方法的声明,没有方法体
21 * > 包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的
22 * > 若子类重写了父类中的所有抽象方法后,此子类方可实例化
23 * 若子类没有重写父类中的所有抽象方法,则此子类也是一个抽象类,需要使用
24 * abstract修饰
25 *
26 * abstract使用上的注意点:
27 * 1.abstract 不能用来修饰:属性,构造器等结构
28 *
29 * 2.abstract不能用来修饰私有方法、静态方法、final的方法、final的类
30 *
31 *
32 */
33 public class AbstractTest {
34 public static void main(String[] args) {
35
36 //一旦 Person类抽象了,不可实例化
37 // Person p1 = new Person(); //abstract 不能造对象
38 // p1.eat();
39
40
41
42
43 }
44
45 }
46
47 abstract class Creature{
48
49 public abstract void breath();
50 }
51
52 abstract class Person extends Creature {
53
54 String name;
55 int age;
56
57 public Person() {
58
59
60 }
61 public Person(String name,int age) {
62
63 this.name = name;
64 this.age = age;
65 }
66
67 // public void eat()
68 // {
69 // System.out.println("人吃饭");
70 // }
71
72 //抽象方法
73 public abstract void eat();
74
75 public void walk()
76 {
77 System.out.println("人走路");
78 }
79
80 }
81
82
83 class Student extends Person{
84
85 public Student(String name,int age) {
86 super(name,age);
87 }
88 public Student() {
89
90 }
91
92
93 public void eat() {
94 System.out.println("学生吃饭!!");
95 }
96
97
98 @Override
99 public void breath() {
100 // TODO Auto-generated method stub
101 System.out.println("学生呼吸!!!!");
102 }
103
104
105 }
1 package com.bytezreo.abstractTest;
2
3 /**
4 *
5 * @Description 关于抽象类匿名子类
6 * @author Bytezero·zhenglei! Email:420498246@qq.com
7 * @version
8 * @date 上午8:10:06
9 * @
10 *
11 */
12 public class PersonTest {
13
14 public static void main(String[] args) {
15
16 method(new Student()); //匿名对象
17 System.out.println("*************");
18
19 Worker worker = new Worker();
20
21 method1(worker); //非匿名的类 非匿名的对象
22
23 method1(new Worker()); // 非匿名的类 匿名的对象
24
25 System.out.println("**********************************");
26
27 //创建了 匿名类的对象:P1 Person的子类
28 Person p1 = new Person() {
29
30 @Override
31 public void eat() {
32 // TODO Auto-generated method stub
33 System.out.println("吃东西------抽象重写");
34
35 }
36
37 @Override
38 public void breath() {
39 // TODO Auto-generated method stub
40 System.out.println("呼吸-----抽象重写");
41
42 }
43
44 //
45 // public void walk()
46 // {
47 // System.out.println("人走路------抽象重写");
48 // }
49 //
50
51
52
53 };
54
55 method1(p1);
56 System.out.println("**********************************");
57
58 //创建匿名子类的匿名对象
59 method1(new Person() {
60
61 @Override
62 public void eat() {
63 // TODO Auto-generated method stub
64 System.out.println("吃东西---创建匿名子类的匿名对象");
65
66 }
67
68 @Override
69 public void breath() {
70 // TODO Auto-generated method stub
71 System.out.println("呼吸---创建匿名子类的匿名对象");
72
73 }
74
75
76
77 });
78
79 }
80
81 public static void method1(Person p) {
82
83 p.eat();
84 p.walk();
85 p.breath();
86 }
87
88
89 public static void method(Student s) {
90
91 }
92 }
93
94
95
96
97 class Worker extends Person{
98
99 @Override
100 public void eat() {
101
102
103 }
104
105 @Override
106 public void breath() {
107
108
109 }
110
111 }

Java 关于抽象类匿名子类的更多相关文章
- Java基础系列 - 抽象类,子类继承
package com.company; /** * 抽象类继承 * 用abstract修饰类就是抽象类 * 用abstract修饰方法就是抽象方法(一般使用比较少) * 抽象类不能被实例化 */ p ...
- java内部类以及匿名类
内部类 一个类内部定义的类称为内部类. 内部类允许把逻辑相关的类组织在一起,并控制内部代码的可视性. 内部类与外部类的结构层次如下. 顶层类:最外层的类 外部类:内部类所在的类 内部类:类内部定义的类 ...
- 深入理解java的抽象类和接口(转载)
原文链接:http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的 ...
- java学习--抽象类与接口
一.抽象 在使用抽象类时需要注意几点: 1.抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可. 2.抽象方法必须由子类来进行重写. 3.只要包含一个抽象方法的抽象类,该方 ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
- Java中抽象类和接口的用法和区别
一.抽象类 1.抽象类 包含一个抽象方法的类就是抽象类 2.抽象方法 声明而未被实现的方法,抽象方法必须使用abstract关键词字声明 public abstract class People { ...
- 关于JAVA中抽象类和接口的区别辨析
今天主要整理一下新学习的有关于Java中抽象类和接口的相关知识和个人理解. 1 抽象类 用来描述事物的一般状态和行为,然后在其子类中去实现这些状态和行为.也就是说,抽象类中的方法,需要在子类中进行重写 ...
- Java 接口-抽象类解析
对于面向对象编程,抽象是它的三大特征(抽象.继承.多态)之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类. 这两者既相似又存异.诸位在初学的时候也会傻傻分不清接口与抽象类的区别,大 ...
- [ Java学习基础 ] Java的抽象类与接口
一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...
- java中抽象类的定义和使用
java虽然比较简单,但是细节的知识点还是很多的,现在,介绍一下抽象类的定义和实现基础. 指的是在类中定义方法,而不去实现它,而在它的子类中去具体实现,继承抽象类的子类必须实现父类的抽象方法,除非子类 ...
随机推荐
- 3.1 C++ STL 双向队列容器
双向队列容器(Deque)是C++ STL中的一种数据结构,是一种双端队列,允许在容器的两端进行快速插入和删除操作,可以看作是一种动态数组的扩展,支持随机访问,同时提供了高效的在队列头尾插入和删除元素 ...
- BoostAsyncSocket 异步反弹通信案例
Boost 利用ASIO框架实现一个跨平台的反向远控程序,该远控支持保存套接字,当有套接字连入时,自动存储到map容器,当客户下线时自动从map容器中移除,当我们需要与特定客户端通信时,只需要指定客户 ...
- Metasploit 生成带SSL加密载荷
1.下载证书.Impersonate_SSL模块,下载指定网站的证书. msf6> use auxiliary/gather/impersonate_ssl msf6 auxiliary(gat ...
- centos环境下MySQL8.0.25离线升级至8.0.32
环境 centos7 mysql8.0.25 下载新版本mysql 下载地址:https://dev.mysql.com/downloads/mysql/ 升级 备份数据 先保存原始数据,进入mysq ...
- Docker从认识到实践再到底层原理(六-2)|Docker容器操作实例
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- P6824 「EZEC-4」可乐 题解
题目链接:可乐 一开始想着 0-1 Trie,枚举 \(x\) 去写,然后判断就行了.然后想起南京区域赛的 C 题,其实和这个也有点大同小异的感觉,可以用更朴素的办法,找到对于一个 \(a_i\) 而 ...
- ElasticSearch7.3学习(十八)----多索引搜索
1.multi-index 多索引搜索 多索引搜索就是一次性搜索多个index下的数据 /_search:所有索引下的所有数据都搜索出来 /index1/_search:指定一个index,搜索其下所 ...
- Linux--top命令解释
top命令解释 1.1 系统运行时间和平均负载: top命令的顶部显示与uptime命令相似的输出 这些字段显示: 当前时间 系统已运行的时间 当前登录用户的数量 相应最近5.10和15分钟内的平均负 ...
- JS Leetcode 74. 搜索二维矩阵题解分析,二分法与坐标轴法
壹 ❀ 引 本题来自Leetcode74. 搜索二维矩阵,虽然难度是中等,但如果站在做出来的角度,你会发现其实并不难,题目描述如下: 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值. ...
- Linux进程通信 | 共享内存
一.共享内存是什么 在Linux系统中,共享内存是一种IPC(进程间通信)方式,它可以让多个进程在物理内存中共享一段内存区域. 这种共享内存区域被映射到多个进程的虚拟地址空间中,使得多个进程可以直接访 ...