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. vs不同版本支持的c++版本和PlatformToolset,及在vs中切换c++版本

    找c++资料从网上找确实更快速,但要想深入地理解vc++建议看msdn文档. vs不同版本支持的c++版本 C++17: vs2017基本支持,vs2015部分支持. C++14: vs2017就可以 ...

  2. vim 从嫌弃到依赖(18)——查找模式进阶

    上一篇文章中,我们初步结识了如何使用查找模式,也能够通过n和 N进行查找.这篇将会介绍搜索中更高级的用法.另外在写上一篇文章的时候我发现介绍查找相关内容的时候不能用动图来演示,主要是因为输入的内容太多 ...

  3. 13.2 外部DirectX绘制实现

    在前一节中我们简单介绍了D3D绘制窗体所具备的基本要素,本节将继续探索外部绘制技术的实现细节,并以此实现一些简单的图形绘制功能,首先外部绘制的核心原理是通过动态创建一个新的窗口并设置该窗口属性为透明无 ...

  4. MongoDB 7.0 搭建 Sharding 副本集群

    本文是在ubuntu 22.03 系统版本上部署的,最低支持mongodb-6.0.4以上,所以这里安装mongodb7.0 1 安装mongo 安装方式有多种,本人是使用的第一种方式,时间也就20分 ...

  5. 希捷推出IronWolf Pro 24TB硬盘:CMR构建、285MB/s传输速率

    希捷推出了全新IronWolf Pro 24TB硬盘,采用3.5寸规格,满足中小企业和NAS环境需求. 据了解,新款硬盘采用了希捷AgileArray技术,针对NAS系统进行了优化.其通过双平面平衡和 ...

  6. C++界面库(十几种,很全)

    C++界面库是用于GUI界面设计的工具包,可以帮助开发人员快速开发出美观.易用的界面.在选择C++界面库的时候,开发人员需要根据项目要求.使用场景.开发难易程度以及所适配的操作系统等因素进行综合考虑. ...

  7. 【算法】C语言程序编程模拟实现strlen函数和strcpy函数

    C语言程序编程模拟实现strlen函数和strcpy函数(超详细的注释和解释) 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说 ...

  8. 零基础入门学习Java课堂笔记 ——day05

    面向对象(上) 面向过程:我打算列个计划表一步一步来 面向对象:我喜欢先分析分类,把复杂的问题简单化 1.什么是面向对象!!? 面向对象的本质就是:以类的方式组织代码,以对象的方式组织数据 封装 继承 ...

  9. JS Leetcode 496. 下一个更大元素 I 更清晰的图解单调栈做法

    壹 ❀ 引 最近一周的工作压力很大...一周的时间一直在处理一个APP漏洞问题,因为项目三年无人维护,突然要改东西光是修改构建错误以及三方包依赖错误就花了三天时间= =.不过好在问题到已经结束尾,闲下 ...

  10. NC20477 [ZJOI2008]树的统计COUNT

    题目链接 题目 题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II ...