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 关于抽象类匿名子类的更多相关文章

  1. Java基础系列 - 抽象类,子类继承

    package com.company; /** * 抽象类继承 * 用abstract修饰类就是抽象类 * 用abstract修饰方法就是抽象方法(一般使用比较少) * 抽象类不能被实例化 */ p ...

  2. java内部类以及匿名类

    内部类 一个类内部定义的类称为内部类. 内部类允许把逻辑相关的类组织在一起,并控制内部代码的可视性. 内部类与外部类的结构层次如下. 顶层类:最外层的类 外部类:内部类所在的类 内部类:类内部定义的类 ...

  3. 深入理解java的抽象类和接口(转载)

    原文链接:http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的 ...

  4. java学习--抽象类与接口

    一.抽象 在使用抽象类时需要注意几点: 1.抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可. 2.抽象方法必须由子类来进行重写. 3.只要包含一个抽象方法的抽象类,该方 ...

  5. 转:二十一、详细解析Java中抽象类和接口的区别

    转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...

  6. Java中抽象类和接口的用法和区别

    一.抽象类 1.抽象类 包含一个抽象方法的类就是抽象类 2.抽象方法 声明而未被实现的方法,抽象方法必须使用abstract关键词字声明 public abstract class People { ...

  7. 关于JAVA中抽象类和接口的区别辨析

    今天主要整理一下新学习的有关于Java中抽象类和接口的相关知识和个人理解. 1 抽象类 用来描述事物的一般状态和行为,然后在其子类中去实现这些状态和行为.也就是说,抽象类中的方法,需要在子类中进行重写 ...

  8. Java 接口-抽象类解析

    对于面向对象编程,抽象是它的三大特征(抽象.继承.多态)之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类. 这两者既相似又存异.诸位在初学的时候也会傻傻分不清接口与抽象类的区别,大 ...

  9. [ Java学习基础 ] Java的抽象类与接口

    一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...

  10. java中抽象类的定义和使用

    java虽然比较简单,但是细节的知识点还是很多的,现在,介绍一下抽象类的定义和实现基础. 指的是在类中定义方法,而不去实现它,而在它的子类中去具体实现,继承抽象类的子类必须实现父类的抽象方法,除非子类 ...

随机推荐

  1. 使用Visual Studio调试 .NET源代码

    前言 在我们日常开发过程中常常会使用到很多其他封装好的第三方类库(NuGet依赖项)或者是.NET框架中自带的库.如果可以设置断点并在NuGet依赖项或框架本身上使用调试器的所有功能,那么我们的源码调 ...

  2. CouchDB vs. LevelDB

    CouchDB 和 LevelDB 都是数据库系统,但它们在很多方面有着不同的设计和应用重点.下面是对这两个数据库在一些关键点上的对比: 数据模型: CouchDB:CouchDB 是一种面向文档的数 ...

  3. 开源IM项目OpenIM每周迭代版本发布-群管理 阅后即焚等-v2.0.6

    新特性介绍 OpenIM每周五发布新版,包括新特性发布,bug修复,同时合并PR,解决issue等 一个完善的IM系统,非常复杂,功能繁多,需求不一,比如对象存储有云端oss,cos,s3,私有化存储 ...

  4. [3] 以逆向的角度来看循环语句——do、while、for的比较

    [3] 以逆向的角度来看循环语句--do.while.for的比较 1. do循环 ​ 先执行循环体,后比较判断 #include <stdio.h> int main(int argc, ...

  5. Webpack4+实现原理

    目录 webpack4核心基础 1.webpack开篇 2.webpack配置文件 3.webpack配置文件注意点 4.webpack-sourcemap 5.webpack-file-loader ...

  6. python快速入门【五】---- 面向对象编程、python类

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

  7. SqlDapperEasyUtil:.NET CORE下的Dapper封装操作类

    之前介绍了基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,这个在.NET FX下还是比较好用的,现在都流行.NET CORE,故我这边再次进行精简修改,以便适应.NET ...

  8. 单片机 IAP 技术方案设计

    1.前言 关于 IAP 技术,做过 bootloader 的想必很熟悉 (IAP全称 In Application Programming,即应用编程),和 ISP (全称 In System Pro ...

  9. electron useContentSize的详解

    useContentSize作用就是  由于window窗体有边框和title区域menu等,该区域不能显示自己的html页面(new BrowserWindow 时设置frame=false禁用边框 ...

  10. SpringBoot中单元测试如何对包含AopContext.currentProxy()的方法进行测试

    今天在工作中遇到一个问题,一个Service类中有一个方法,其中使用了 AopContext.currentProxy() 去访问自身的函数,例如 int result = ((OrderServic ...