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. 用webpack给js添加上版本号

    在网上查找了很多的资料. 都没有好的资源 因为我现在在项目是vuecli3.0 需要自己去创建文件 在项目的根目录下,创建一个文件vue.config.js 然后在该文件下写 const webpac ...

  2. 【学到一个小技巧】context.WithValue 中的 key 可以是个空对象

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 从 netpoll 库看到这段代码: type connk ...

  3. Golang并发控制方式有几种?

    Go语言中的goroutine是一种轻量级的线程,其优点在于占用资源少.切换成本低,能够高效地实现并发操作.但如何对这些并发的goroutine进行控制呢? 一提到并发控制,大家最先想到到的是锁.Go ...

  4. Visual Studio安装教程、Visual Studio2017软件提供,版本序列号丨编写第一个程序。

    一.安装步骤 1.安装前注意一下自己电脑的IE浏览器是不是10 版本及以上的,如果不是要先升级到10才能安装 Visual Studio2017.打开IE浏览器,点击[设置]接着点击[关于]即可查看. ...

  5. 基于.NET三维控件的个性化管道软件开发

    1 简介 管道广泛用于化工.工厂.建筑.市政等方面,关系到国计民生.虽然管道设计软件种类繁多,有的也非常强大(然而也非常昂贵),但也并不能完全满足个性化需要. 如何快速开发一款满足自己需求的三维管道设 ...

  6. 俄大神 lopatkin Windows 精简优化系统 - 工具软件

    昨天有个网友邮件我,说是想找个Tiny7 Rev2的ISO操作系统文件,但是我找了下,以前的那些文件有些已经删除了,所以就在网上搜到了俄大神 lopatkin Windows 精简优化系统,特此放到网 ...

  7. 阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。

    SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利.然而,当面临高并发场景时,理解并合理配置Spring Boot应用以达到最佳的并发处理能力至关重 ...

  8. 洛谷P3046 海底高铁 巧用差分统计经过区间次数

    洛谷P3046 海底高铁 -差分统计经过区间次数 题目贴在这里P3406 海底高铁 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 分析 本题题干很长,但是题意理解很简单.就是给定n ...

  9. 手把手带你上手swagger3

    配置POM 只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题 <dependency> <groupId>io.springfox& ...

  10. MySQL中 int(11)和int(10)有没有区别!!

    结论:int(11)  int(3)  int(20)  若不勾选填充0,那么效果统统一样,若勾选了填充0:查询出来的效果 会是这样: int(11)  00000000123 int(3)  123 ...