精华内容
下载资源
问答
  • 抽象方法的实现是什么意思
    万次阅读 多人点赞
    2019-06-03 19:49:52

    原文链接:https://bbs.csdn.net/topics/280030545

    1.抽象类肯定可以实现接口; 
    2.这不是有没有意义的事情,是一种思想,当你自己写的类想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象类先实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到你的目的了,如果你直接用类实现接口,那是所有方法都必须实现的; 
    3.这种思想在java.swing.event包中运用的非常多,里面一般以Adapter为后缀的都是抽象类,它们都实现了特定的事件…

     

    更多相关内容
  • java抽象类和抽象方法

    千次阅读 2021-03-07 00:02:17
    一、什么是抽象类和抽象方法没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类,抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法。抽象类的使用一般通过继承来实现...

    一、什么是抽象类和抽象方法

    没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类,抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法。抽象类的使用一般通过继承来实现

    二、为什么需要抽象类和抽象方法

    引用抽象方法和抽象类,是java提供的一种语法工具,引导使用者正确的使用它们,减少误用。相当于对子类进行一定限制。

    三、抽象类和抽象方法的语法规则及其注意事项

    抽象类抽象方法必须被abstract修饰。

    抽象类中可以有普通方法,但是有抽象方法的类必须是抽象类。抽象类中的普通方法因为不能被创建对象,所以不能使用这个普通方法。

    抽象类除了不能实例化对象之外,类的其它功能依然存在。

    抽象方法中可以有被static修饰main方法,并且可以执行。

    一个类在继承抽象类后,必须实现抽象类中定义的所有抽象方法。除非它自己也声明为抽象类。

    抽象方法名后面直接跟一个分号,而不是花括号。

    四、抽象类和抽象方法的实现案例

    1、抽象类中可以有普通方法,但是有抽象方法的类必须是抽象类。

    public abstract class Demo01 {

    public abstract void run();

    public void test(){}

    }

    //编译通过,不报错

    public class Demo01 {

    public abstract void run();

    public void test(){}

    }

    //报错:

    Class 'Demo01' must either be declared abstract or implement abstract method 'run()' in 'Demo01'

    Abstract method in non-abstract class

    2a03c1ce46b001404d74cb483c53dfed.png

    2、抽象类除了不能实例化对象

    public abstract class Demo01 {

    public abstract void run();

    public static void main(String[] args) {

    Demo01 demo01=new Demo01();

    }

    }

    e391d9aa2a3f1229ee45ef3aa8a40ae4.png

    3、抽象方法中可以有被static修饰main方法,并且可以执行。

    public abstract class Demo01 {

    public abstract void run();

    public static void main(String[] args) {

    System.out.println("抽象类中的main方法");

    }

    }

    //输出结果:抽象类中的main方法

    4、抽象类的使用一般通继承来实现,且子类中要么对抽象类的方法进行重写,要么声明子类也为抽象类

    public class Demo02 extends Demo01{

    @Override

    public void run() {

    }

    }

    abstract class Demo03 extends Demo01{

    }

    //Demo02和Demo3均能编译通过。

    5、抽象类中的静态方法可以用类名.方法名的方式调用

    e48ac6d43d5525c72074397ed91e40cc.png

    6、抽象的实例:

    有抽象类Father,和抽象方法run()。

    public abstract class Father {

    private String name;

    private int age;

    private char sex='男';

    public int money=100_000;

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public int getAge() {

    return age;

    }

    public void setAge(int age) {

    this.age = age;

    }

    public char getSex() {

    return sex;

    }

    public void setSex(char sex) {

    this.sex = sex;

    }

    abstract void run();

    public void say(){

    System.out.println("这是父类普通方法");

    }

    public static void go(){

    System.out.println("这是父类静态方法");

    }

    }

    有子类Son继承了抽象类,重写了父类的抽象方法run

    public class Son extends Father{

    private double salary;

    @Override

    void run() {

    System.out.println("子类重写了父类的方法run");

    System.out.println(super.getSex());

    super.say();

    }

    public static void main(String[] args) {

    Son son=new Son();

    son.run();

    System.out.println(son.getSex());

    //System.out.println(super.getSex()); //错误

    son.setAge(47);

    System.out.println(son.getAge());

    son.setName("ThreePure");

    System.out.println(son.getName());

    //调用父类的公有属性

    System.out.println(son.money);

    //使用继承于父类的方法

    son.say();

    }

    }

    运行结果:

    子类重写了父类的方法run

    这是父类普通方法

    47

    ThreePure

    100000

    这是父类普通方法

    尽管我们不能实例化一个 Father类的对象,但是如果我们实例化一个 Son 类对象,该对象将从 Father 类继承 成员方法,且通过该方法可以设置或获取成员变量。

    五、抽象类的其他补充吗

    抽象类是否有构造器:

    e4dc66d994535459d7bdc270574d7b1e.png

    从图中我们可以知道抽象类也是有构造器的,并别在子类创建对象时被调用。

    public abstract class Demo3 {

    public Demo3() {

    System.out.println("抽象类的构造方法");

    }

    }

    public class Demo4 extends Demo3{

    public static void main(String[] args) {

    Demo4 demo4 =new Demo4();

    }

    }

    //抽象类的构造方法

    2、final与abstract的矛盾

    final关键字可以修饰类、方法、变量。final修饰的类不能被派生;final修饰的方法,禁止子类重写。所以我们可以看出,final和abstract不能一起使用。

    3、构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

    ef1db7eeaea5b0eb959f00a80b959e63.png

    展开全文
  • C#中抽象类与抽象方法的详解

    万次阅读 2020-06-17 17:41:11
    抽象类的含义是什么? 抽象类怎么创建? 抽象类的规则有哪些? 抽象方法? 抽象类被运用的意义是什么?

    前言:在上一篇博文关于重写的前提说明中提到了,那么今天我们一起来看看抽象类以及抽象方法…,首先我们顺着目录从抽象类的介绍开始学习:

    一.抽象类:

    抽象类:往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象,在面向对象的C#编程语言中,通常用abstract来进行声明它是一个抽象类;

    1.声明形式(创建抽象类):

     访问修饰符 abstract class abstract_name{}
    

    举例,我们创建一个父类,它拥有一个方法:

     abstract class Father//抽象类关键字abstract
        {
            public void Run()
            {
                Console.WriteLine("我是抽象类我会跑,也会跳");
            }
         }
    

    谨记:在抽象方法声明中不能使用staticvirtual修饰符!!!
    原因请看图:
    在这里插入图片描述
    在这里插入图片描述

    2.抽象类的调用:

     abstract class Father//抽象类关键字abstract
        {
            public void Run()
            {
                Console.WriteLine("我是抽象的父类我会跑,也会跳");
            }
         }
         class Son:Father//继承抽象类
        {}
        class Program
        {
            static void Main(string[] args)
            {
            Son son = new Son();
            son.Run();
            Console.ReadLine();
           }
         }
    

    运行结果:
    在这里插入图片描述
    也许会有小伙伴会疑惑为什么不去实例化这个名为"Father"的抽象类呢?下面我们来说说抽象类的规则:

    二.抽象类的规则:

    1. 不能创建一个抽象类的实例:

     Father father = new Father();
    

    如果我们这样写是错误的,为什么呢,来看看:
    在这里插入图片描述
    2. 不能在一个抽象类外部声明一个抽象方法:
    在这里插入图片描述
    3.不能用sealed关键字来修饰抽象类:
    通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承:
    在这里插入图片描述
    4.抽象类中可以声明正常函数:
    在这里插入图片描述

    三.抽象方法:

    抽象方法只允许在抽象类中进行声明!
    举例:

     abstract class Father//抽象类关键字abstract
        {
          public abstract  int Abb();//方法
        }
    

    在抽象类中进行声明后,必须在子类的继承中进行override,否则就会报错!!,同理属性也是如此!!
    在这里插入图片描述

    四.应用举例:

    完整举例代码:

     abstract class Father//抽象类关键字abstract
        {
            public void Run()
            {
                Console.WriteLine("我是抽象的父类我会跑,也会跳");
            }
            public abstract  int Abb();//方法
            public abstract int  SS{ get; }//属性
        }
         class Son :Father
        {
            public override int SS
            {
                get { return 1; }
            }
             public void Jump(int a)
            {
                Console.WriteLine("我是第{0}个子类",a);
            }
            public override int Abb()
            {
                Console.WriteLine("我是第{0}抽象方法",SS);
                return (1);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
               Son son = new Son();
                son.Run();
                son.Abb();
                son.Jump(1);
                Console.ReadLine();
             }
         }
    

    运行结果:
    在这里插入图片描述

    五.抽象类的运用意义;

    在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类;

    六.总结:

    1. 抽象类中的抽象属性和抽象方法必须是公有的,因此必须有public修饰符;
    2. 子类必须override抽象类中的所有抽象属性和抽象方法,如果没有全部override,那么子类必须是抽象类;
    3. 抽象类中可以有非抽象属性和非抽象方法,也可以是私有或者公有,但是如果是私有的话子类就不能访问,无意义,所以一般情况下都设置为公有public访问修饰符;
    4. 有抽象方法或抽象属性的类一定是抽象类,抽象类中的属性或方法不一定都是抽象的;
    5. 对抽象类不能使用new关键字,也不能被密封,原因是抽象类不能被实例化,不能被密封,因为抽象类要求对类进行继承;
    6. 抽象类应主要用于关系密切的对象;
    7.从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现;

    展开全文
  • 一、抽象类与抽象方法、 二、 相关资源





    一、抽象类与抽象方法



    抽象类 不能创建实例对象 , 其作用是用于定义接口 ;

    定义抽象类 : 使用 abstract 关键字定义抽象类 , 格式如下 :

    abstract class 抽象类名称{
      
    }
    

    抽象类中既可以包含没有方法体的方法 , 又可以包含有方法体的方法 ;

    抽象方法 : 没有方法体的方法称为抽象方法 , 没有关键字定义 ;


    抽象类不一定有抽象方法 , 抽象类中可以定义抽象方法 , 也可以不定义 ;

    如果类中有抽象方法 , 必须将该类标为抽象类 ;

    抽象类可以没有抽象方法 , 有抽象方法的一定是抽象类 ;


    抽象类子类 : 抽象类的子类既可以是 抽象类 , 又可以是 普通类 ;

    • 普通类 : 如果普通的类继承抽象类 , 必须实现抽象类的抽象方法 ;

    • 抽象类 : 如果抽象类继承抽象类 , 则 不必实现父类抽象方法 ; ( 不强制实现 , 可以实现 )


    抽象类代码示例 :

    // 定义抽象类
    abstract class AbstractPerson{
    
      // 抽象类中可以定义没有方法体的方法
      void log();
    
      // 抽象类中可以包含有方法体的方法
      void log2(){
        print("AbstractPerson");
      }
    
    }
    
    // 继承抽象类 , 必须实现抽象类中的抽象方法
    class Student3 extends AbstractPerson{
    
      @override
      void log() {
        print("Student3");
      }
    
    }
    
    // 抽象类继承抽象类 , 不必实现抽象类中的抽象方法
    abstract class Student4 extends AbstractPerson{
    
    }
    




    二、 相关资源



    参考资料 :


    博客源码下载 :

    展开全文
  • 接口、抽象类和实现

    千次阅读 2019-04-13 10:49:25
    2. 接口能被类(抽象类和具体类)实现,区别在于抽象实现接口,可以实现该接口的方法,也可以不实现该接口的方法;具体类必须实现接口的所有方法 3. 接口可以被接口继承,但不允许被类继承 4. 类之间可以相互继承...
  • 读源码的时候关键地方卡住了,在一个方法的结尾把数据作为参数调用了一个抽象类的方法,这个方法不是抽象方法,方法体也是空的,这个抽象类的子类只有一个,而且也没有实现这个方法,那这些数据到底了什么地方呢?...
  • 本篇文章给大家带来的内容是介绍java中抽象类,让大家对抽象类有一个简单的了解,知道抽象类是什么,怎么声明。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。在我们介绍抽象类之前,我们首先来...
  • **抽象类可以使用implements关键字实现接口,但又不用在该抽象类里实现接口里的具体方法(不实现接口的具体方法不会报错),那设计抽象类可以使用implements来实现接口有什么意义啊?** 抽象类: public ...
  • 什么是抽象数据类型?

    千次阅读 2021-04-29 23:15:13
    什么是抽象数据类型?前言1.数据类型和数据构造2.抽象数据类型的概念3.抽象数据类型的描述 前言 抽象数据类型(Abstract Data Type,ADT)是计算机领域中被广泛接受的一种思想和方法,也是一种用于设计和实现程序...
  • 抽象实现多态

    千次阅读 2016-05-26 21:21:24
    那么虚方法可以实现多态,抽象类也可以实现多态,那么到底什么时候使用抽象类呢当父类中的方法不知道如何去实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法抽象类几个特别注意的地方: 抽象成员必须标记...
  • C++中的抽象概念详解

    千次阅读 2020-04-23 11:38:31
    C++中的抽象概念详解 本文转自: c++中的抽象概念详解 一、定义. 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。...在基类中实现纯虚函数的方法是在函数原型后加“=...
  • Calendar c = new Calendar(); 出现 new Calendar()就会执行...1、抽象类可以不包括抽象方法,它反正不会去实例化,抽象类不能被实例化,也就是不能用new关键字去产生对象,抽象方法只需声明,而不需实现,抽象类的...
  • 接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。 如何定义一个接口的格式: public interface 接口名称{ //接口内容 } 备注:换成了关键字interface之后,编译生成的字节码文件仍然是:java --> ...
  • 关于JAVA中,“什么是抽象”概念的简述 Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。 抽象方法 在抽象类中可以包含一般方法和抽象方法抽象方法的定义与一般方法不同,抽象方法在方法头后直接...
  • Go继承的方法重写,继承抽象实现

    千次阅读 2019-04-20 15:55:47
    Go继承的方法重写,继承抽象实现 go的接口和继承就没什么好说的了,基本上大家都知道怎么玩,这里说下可能会困扰大家的问题。在Java里方法的重写和抽象类是很好用的,对于抽象和尽量共用抽象出来的代码很重要,...
  • 但很多人常常搞不清楚,究竟什么是抽象,以及如何进行抽象。今天我们就来谈谈抽象什么是抽象?首先,抽象这个词在中文里可以作为动词也可以作为名词。作为动词的抽象就是指一种行为,这种行为的结果,就是作为名词...
  • Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法,定义一个方法一次显示长和宽、周长和面积。
  • 匿名用户1级2019-04-14 回答A选项,对。java中类之间只能够实现单继承,即就是说一个类只能有一个父类,但允许多层继承,即就是一个类有...但,类对于接口的话,类可以实现多个接口,即使不同接口有相同的抽象方法,...
  • 抽象什么

    万次阅读 2018-05-12 09:35:36
    对于抽象,没学Java之前,真的不理解什么抽象,但是学习Java又多次遇到抽象这个概念,Java中讲的很多基本方法,都是抽象而来;因此,自己就不断地去思考,抽象什么? 抽象是通过分析综合的途径,运用在人脑中...
  • 水文 标题 可能的Java代码: import java.util.*; abstract class Shape { public abstract Double calculateShape(); } class Rectangle extends Shape { private double length; private double width;... {
  • 主要介绍了Java钩子方法概念原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 什么是抽象

    千次阅读 2019-09-27 17:09:07
    父类只需要提供一个没有方法体的方法,具体实现交给子类自己去实现。我们把没有方法体的方法称为抽象方法。Java语法规定,包含抽象方法的类就是抽象类。
  • 抽象类为什么不能被实例化?

    千次阅读 多人点赞 2019-12-04 21:54:39
    今天无意中看到一个问题:为什么抽象类不能实例化? 很多人的答案都是再说使用抽象类的好处,但是并没有回答为什么不能实例化?这个过程就像是在回答:为什么公鸡不能下蛋?然后回答是使用公鸡可以打鸣。 按照我的...
  • 什么是接口?接口和抽象类的区别?

    万次阅读 多人点赞 2019-07-09 21:10:39
    接口就是比“抽象类"还“抽象”的“抽象类”, 可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。接口是完全面向规范的,规定了-批类具有的公共方法规范。 从接口的实现者角度看,接口定义了...
  • 接口中的方法都是抽象方法抽象方法不能写具体的方法体,而是只能声明,在接口的实现类中重写方法。 【示例】 public interface Music { public void install(); public void play(); public void uninstall().....
  • 每一个人都有一些诸如名字这样的属性,学生与雇员都有名字属性,因此可以将getName方法放在位于继承关系较高层的通用超类(父类)中,现在增加一个getDescription方法,返回对一个人的简短描述,例如: an employee...
  • C语言之抽象数据类型(四十七)

    千次阅读 2022-03-15 13:38:38
    2.抽象数据类型(Abstract Data Type) 定义:抽取实际问题的本质。 指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。 具体分为:数据对象、数据对象关系的集合、数据对象基本...
  • 抽象类为什么不能实例化(new)

    千次阅读 2021-02-09 20:23:43
    那么回归本问题,什么是抽象类? 抽象:就是不具体的意思。类是对对象的具体描述,而抽象类不具体,没有方法体,(提供的成员不足以生成一个具体对象),那么就无法生成一个不具体的对象。就好比,你可以实例化一个...
  • java中类是什么意思

    千次阅读 2021-02-12 10:44:58
    类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。类是...
  • 对软件开发中的"抽象"的理解

    千次阅读 2019-03-09 23:15:54
    这一概念,无论是应用层、操作系统层,还是驱动层,都会涉及到抽象编程,那到底什么是抽象呢? 1 何为抽象? 1.1从哲学的角度看: 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。 例如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 192,222
精华内容 76,888
关键字:

抽象方法的实现是什么意思