1.首先我们引出抽象,在我们过去写一个父类和写一个子类的时候,要进行子类对父类方法的重写,那么父类原来的实体方法中的方法体中的内容就没有了意义,因为方法重写后执行的是子类重写后的方法。所有我们想要将父类中需要子类重写的方法的方法体去掉,这个时候就需要用到abstract这个关键字

public class Error {public static void main(String[] args) {B b=new B();b.m();}}class A{//属性
    String name;//方法public void m1() {System.out.println("父类重写方法的方法体中的代码没有意义了");}}
class B extends A{ public void m() {System.out.println("执行的是子类重写后的方法");}
}

改造后

public class Error {public static void main(String[] args) {B b=new B();b.m();}}abstract class A{ //抽象类中才能有抽象方法//属性
    String name;//方法public abstract void m();  //改成抽象方法}
class B extends A{ public void m() {System.out.println("执行的是子类重写后的方法");}
}

1.一个类中有了抽象方法,此时这个类就要变成抽象类

2.如果父类是抽象类,子类要重写我们所有的抽象方法。

3.子类变成抽象类就不用全部重写父类的抽象方法。

如果一个类是抽象类,那么一定有抽象方法?不一定,有抽象方法的类才一定是抽象类。

抽象类能创建对象吗?抽象类不能创建对象。解释如下

1.在底层会对抽象类通过构造方法创建对象,但是这是通过c语言构建的对象,从而java本身是拿不到这个对象的,所以对外就是创建不了对象的。

2.抽象方法没有具体的方法体----创建出来的对象却不能调用抽象方法,会出现调用错误,任何返回的东西都没有。

import java.util.Scanner;
public class Error {public static void main(String[] args) {A a =new A(1) { //A(1)后面的{}是个匿名内部类,a这个对象不是抽象类A的对象,而是匿名内部类的对象
        };}}
abstract class A{int i;public A(int i) {this.i=i;}
}

抽象类里面可以定义属性和实体方法

抽象方法不可以被private/static/final修饰,因为抽象方法一定要被重写,而被private/static/final修饰就不能被重写了

默认访问权限修饰符修饰抽象方法? 只能在同胞子类中去实现重写

不能被final修饰 因为抽象类需要被继承

作用:统一向上造型的类型;

转载于:https://www.cnblogs.com/xuwangqi/p/11098783.html

25 abstract 抽象相关推荐

  1. Abstract(抽象) implement和extend

    1.Abstract(抽象)可以修饰类.方法 如果将一个类设置为abstract,则此类必须被继承使用.此类不可生成对象,必须被继承使用. Abstract可以将子类的共性最大限度的抽取出来,放在父类 ...

  2. java关键字abstract(抽象)详解

    说到抽象,想必大家第一个联想到的就是抽象画,基本上看不懂画的是啥,只能说它在表达某个概念. 在java中我们中abstract关键字来表达抽象.举个例子: 我们说车子都可以跑(run).但有几个轮子, ...

  3. Spring 用注解Annotation注入 abstract 抽象父类的属性

    问题: 希望把子类公共的属性放在抽象类中.运行时,希望在Spring 扫描@Component注解,自动加载子类的同时,自动注入抽象父类的属性. 抽象父类: @Component public abs ...

  4. Java面向对象(五)abstract --- 抽象

    当多个子类中有名称一致当但是细节不同的行为时 , 将 这个行为向上提取到父类中,提取时 , 只提取方法定义,  不提取方法主体 , 这个方法叫抽象方法,抽象方法所在的类也必须是抽象类. 抽象方法和抽象 ...

  5. 第二章:Java面向对象:抽象(abstract)类、模板方法设计模式、接口(interface)、关键字-implements(实现)、代理模式

    package com.atguigu.java; /** Abstract关键字的使用:* 1.abstract:抽象的* 2.abstract可以用来修饰:类.方法* * 3.abstract 修 ...

  6. php中什么是abstract,深入解读php中抽象(abstract)类和抽象方法

    在面向对象(OOP)语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问的接口.而抽象方法就是为了方便继承而引入的,现在来看一下抽象类和抽象方法分别是如何定义以及他们的特点 ...

  7. 【Java设计模式】简单学抽象工厂模式——你好,微信还是支付宝

    目录 说明 实现方式 自问自答 其他链接 说明 五大创建型模式之一,其他还有单例模式.原型模式.建造者模式.工厂模式. 抽象工厂模式(Abstract Factory Pattern):定义了一个in ...

  8. java抽象类关键字_Java之关键字abstract(抽象类与抽象方法)

    /* * abstract关键字的使用 * 1.abstract:抽象的 * 2.abstract可以用来修饰的结构:类.方法 * * 3. abstract修饰类:抽象类 * > 此类不能实例 ...

  9. java中abstract关键字

    abstract关键字的使用 1.abstract: 抽象的 2.abstract可以用来修饰的结构:类.方法 3.abstract修饰类:抽象类 此类不能实例化 抽象类中仍然有构造器,便于子类实例化 ...

最新文章

  1. oracle 查询本周数据生成下周数据
  2. 计算机分级时无法度量视频播放,Win7 64位系统电脑评分出现“无法度量视频播放性能”怎么解决...
  3. 二进制文件签名_二进制数的签名表示
  4. vsphere平台windows虚拟机克隆的小插曲(无法登陆系统)
  5. 一个Python小白5个小时爬虫经历,分享一下
  6. python 爬虫 scrapy1_官网教程
  7. 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
  8. Cookie篡改攻击
  9. win10安装steam有损计算机,Win10安装steam平台提示“steam fatal error”报错的解决方法...
  10. Ubuntu16.04+VMware15.0.4系统瘦身
  11. web浏览器下载文件没响应不报错
  12. JS Worker执行多线程
  13. 领英linkedin使用手册—领英邮件类型,管理运用的方式方法
  14. 全闪存存储、混合闪存存储
  15. Java计算两个时间的月份差值
  16. 语义分割重制版1——Pytorch 搭建自己的Unet语义分割平台
  17. Integer类型巨坑
  18. FPS手游逆向分析--------矩阵
  19. “杭州创业大街”一年沉浮路
  20. 全国计算机三级网络工程技术20天指南

热门文章

  1. SAP OData错误消息:Invalid format (return structure): Property Name ‘Guid‘, Property Value ‘000000
  2. npm install对本地工程文件造成了哪些修改
  3. SAP CRM Fiori My appointment点了Edit按钮后的三个roundtrip详解
  4. 我的世界卸载java_我的世界:官方移除了Herobrine?一个骗了玩家十年的谎言!...
  5. java猴子吃香蕉_Java 猴子分香蕉
  6. mysql数据库的分离_数据库分离和附加 (SQL Server)
  7. IO的几种分类(详细)
  8. c语言 读取一个文件 删除注释,C/C++ 源文件删除注释代码
  9. python职业发展方向_测试的职业发展方向有哪些?该如何规划?
  10. java工具类下载_java文件下载工具类