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虽然比较简单,但是细节的知识点还是很多的,现在,介绍一下抽象类的定义和实现基础. 指的是在类中定义方法,而不去实现它,而在它的子类中去具体实现,继承抽象类的子类必须实现父类的抽象方法,除非子类 ...
随机推荐
- 使用Visual Studio调试 .NET源代码
前言 在我们日常开发过程中常常会使用到很多其他封装好的第三方类库(NuGet依赖项)或者是.NET框架中自带的库.如果可以设置断点并在NuGet依赖项或框架本身上使用调试器的所有功能,那么我们的源码调 ...
- CouchDB vs. LevelDB
CouchDB 和 LevelDB 都是数据库系统,但它们在很多方面有着不同的设计和应用重点.下面是对这两个数据库在一些关键点上的对比: 数据模型: CouchDB:CouchDB 是一种面向文档的数 ...
- 开源IM项目OpenIM每周迭代版本发布-群管理 阅后即焚等-v2.0.6
新特性介绍 OpenIM每周五发布新版,包括新特性发布,bug修复,同时合并PR,解决issue等 一个完善的IM系统,非常复杂,功能繁多,需求不一,比如对象存储有云端oss,cos,s3,私有化存储 ...
- [3] 以逆向的角度来看循环语句——do、while、for的比较
[3] 以逆向的角度来看循环语句--do.while.for的比较 1. do循环 先执行循环体,后比较判断 #include <stdio.h> int main(int argc, ...
- Webpack4+实现原理
目录 webpack4核心基础 1.webpack开篇 2.webpack配置文件 3.webpack配置文件注意点 4.webpack-sourcemap 5.webpack-file-loader ...
- python快速入门【五】---- 面向对象编程、python类
python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...
- SqlDapperEasyUtil:.NET CORE下的Dapper封装操作类
之前介绍了基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,这个在.NET FX下还是比较好用的,现在都流行.NET CORE,故我这边再次进行精简修改,以便适应.NET ...
- 单片机 IAP 技术方案设计
1.前言 关于 IAP 技术,做过 bootloader 的想必很熟悉 (IAP全称 In Application Programming,即应用编程),和 ISP (全称 In System Pro ...
- electron useContentSize的详解
useContentSize作用就是 由于window窗体有边框和title区域menu等,该区域不能显示自己的html页面(new BrowserWindow 时设置frame=false禁用边框 ...
- SpringBoot中单元测试如何对包含AopContext.currentProxy()的方法进行测试
今天在工作中遇到一个问题,一个Service类中有一个方法,其中使用了 AopContext.currentProxy() 去访问自身的函数,例如 int result = ((OrderServic ...