精华内容
下载资源
问答
  • java抽象类可以被继承吗?

    千次阅读 2021-03-06 06:39:35
    Java语言中,用abstract ...java抽象类可以被继承吗?抽象类可以被继承抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所...

    Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。

    3c4cdd513f26a231cfb5b991ec4ede4a.png

    java抽象类可以被继承吗?

    抽象类可以被继承。

    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

    由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

    父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

    抽象类是指不允许被实例化的类;抽象方法是没有方法体的方法。

    1、抽象类可以不包括抽象方法,它反正不会去实例化,里面的方法是不是抽象的没有本质影响。

    2、但是含有抽象方法的类绝不能被实例化,否则执行这个方法的时候,怎么办?

    3、如果子类是非抽象的,那么它就必须实现父类中的抽象方法;否则,它继承来的抽象方法仍然没有方法体,也是个抽象方法,此时就与“含有抽象方法的类必须是抽象类”相矛盾了。

    展开全文
  • 可以被继承,但不能重写。 java多态中有动态绑定机制和静态绑定机制。 动态绑定机制适用于 实例方法:与引用变量实际的引用对象相绑定,调用子类重写后的方法(不能调用子类独有的方法),由运行时JVM决定; 静态...

    可以被继承,但不能被重写。
    java多态中有动态绑定机制和静态绑定机制。

    动态绑定机制适用于

    实例方法:与引用变量实际的引用对象相绑定(比如向上转型:父类引用指向子类对象,此时绑定的是子类对象),调用子类重写后的方法(不能调用子类独有的方法),由运行时JVM决定;

    静态绑定机制适用于

    静态方法(static修饰的方法):与引用变量所声明的类型绑定(比如向上转型:父类引用指向子类对象,此时绑定的是父类引用),实际在编译阶段就进行了绑定。
    成员变量(实例变量和静态变量):与引用变量所声明的类型绑定(比如向上转型:父类引用指向子类对象,此时绑定的是父类引用),在编译阶段就进行了绑定。

    阅读如下代码:
    父类定义为抽象类,父类中定义了抽象方法eat()

    public abstract class Pet {
    	int var = 10;
    	static int num = 20;
    	//定义吃饭的静态方法
        public static void eat(){
            System.out.println("宠物吃东西");
        }
        //定义奔跑的静态方法
        public static void run(){
            System.out.println("宠物奔跑");
        }
    }
    

    子类继承父类,子类中定义了同名抽象方法eat()(注意,不是重写父类的抽象方法)。

    public class Dog extends Pet {
    	int var = 100;
    	static int num = 200;
    	 public static void eat(){
            System.out.println("宠物吃东西");
        }
        public static void main(String[] args) {
            //向上转型,测试静态绑定机制
            Pet pet= new Dog();
            pet.eat();
            System.out.println(pet.var);//父类引用调用实例变量
            System.out.println(pet.num);//父类引用调用静态变量
    		//实例化Dog对象,测试是否可以继承父类静态方法
    		Dog dog = new Dog();
            dog.run();
            
        }
    }
    

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

    使用向上转型,父类引用指向子类对象进行测试,输出结果表明调用的是父类的eat()方法。说明子类不能重写父类的静态方法。
    父类引用调用var和num变量分别输出10和20,说明调用的是父类的成员变量而不是子类的。这也是多态的一种静态绑定机制,与引用变量所声明的类型绑定。
    子类中无run()方法,可以使用父类的run()方法,说明可以继承父类的静态方法。

    展开全文
  • 实例化的子类必须把抽象类的父类中的抽象方法全部都实现,否则报错,换句话说就是:子类必须把父类中的抽象方法全部都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化对。要想实例化抽象类...

    只要一个类里面只要有一个方法是抽象方法,那么这个类就要定义为抽象类,反过来说就是抽象类里面不一定全都得是抽象方法。

    能被实例化的子类必须把抽象类的父类中的抽象方法全部都实现,否则报错,换句话说就是:

    子类必须把父类中的抽象方法全部都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化对。要想实例化抽象类,必须使用其实现了所有抽象方法的子类,这个子类还能写其父类没有的方法。

    接口感觉就是类的模板,实现某接口就得实现接口里面的全部方法,少一个都不行。

    要实例化接口或者抽象类,都得全部实现父类里面的全部抽象方法。

    ================================以下是转载来的,说得太好=================================

    接口和抽象类有什么区别

    你选择使用接口和抽象类的依据是什么?

    接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

    抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

    人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

    所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

    第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。

    第二点. 接口可以多继承,抽象类不行

    第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。

    当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

    抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的

    所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

    =========================================================================================

    展开全文
  • abstract class 雇员 { ... } } 这段代码中,抽象类的三个属性name、ID、pay都是私有化的,为什么能被子类程序员类继承呢?编译是通过的,即是说,子类是可以继承父类私有化类的,那么子类又是否能使用着三个属性呢?

    abstract class 雇员

    {

    private String name;

    private String id;

    private double pay;

    雇员(String name,String id,double pay)

    {

    this.name=name;

    this.id=id;

    this.pay=pay;

    }

    public abstract void work();

    }

    class 程序员 extends 雇员

    {

    程序员 (String name,String id,double pay)

    {

    super(name,id,pay);

    }

    public  void work()

    {

    System.out.println("程序员从事编程工作");

    }

    }

    这段代码中,抽象类的三个属性name、ID、pay都是私有化的,为什么能被子类程序员类继承呢?编译是通过的,即是说,子类是可以继承父类私有化类的,那么子类又是否能使用着三个属性呢?

    展开全文
  • 抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类可以有静态的main方法。问: 抽象类是否可继承实体类 (concrete class)答: 抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。答案很...
  • 1、接口可以继承接口,抽象类可以继承接口,但可以实现接口。 2、抽象类可以继承实体类。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 3.抽象类可以继承实体类...
  • 由于抽象类不能实例化对象,所以抽象类必须被继承,才能使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来...
  • java抽象类 继承

    2021-03-08 06:02:32
    关于java抽象类 继承的搜索结果回答抽象类和接口的区别:默认的方法实现抽象类可以有默认的方法实现完全是抽象的。接口根本不存在方法的实现。抽象类可以有已经实现了的方法,也可以abstract修饰的方法(抽象...
  • java学习笔记(12-继承抽象类

    千次阅读 2021-03-15 17:45:41
    在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类多个类可以继承一个父类在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,...
  • /*** 抽象类继承* 用abstract修饰类就是抽象类* 用abstract修饰方法就是抽象方法(一般使用比较少)* 抽象类不能实例化*/public classMain {public static voidmain(String[] args) {Animal an= newCat();...
  • 我定义了一个抽象类继承非抽象类,且不包含抽象方法但是运行 OK这样做有啥负面作用?public abstract class ExceptionBase extends Exception {protected int status;protected int code;public ExceptionBase...
  • 接口类的多继承以及抽象类的单继承一、接口类(面向对象开发的思想和规范)的多继承需求:定义一个tiger类:会走,会游定义一个hawk类:会走,会飞定义一个swan类:会走,会游,会飞(a)如果像以下代码的方式,则不能够...
  • 由于抽象类不能实例化对象,所以抽象类必须被继承,才能使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来...
  • 这篇文章主要为大家详细介绍了PHP 抽象类继承抽象类解析,具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!抽象类继承另外一个抽象类时,抽象类中,不能重写抽象...
  • 抽象类继承另外一个抽象类时,抽象类中,不能重写抽象父类的抽象方法。这样的用法,可以理解为对抽象类的扩展。下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽象方法。abstractclassUser{...
  • 抽象类继承另外一个抽象类时,抽象类中,不能重写抽象父类的抽象方法。这样的用法,可以理解为对抽象类的扩展。下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽象方法。abstract class ...
  • 上次已经为大家介绍过java抽象类是什么的主要内容了,关于抽象类的知识还是有很多可以拓展的,它继承的知识也是非常的多的,接下来就通过实际的代码来为大家解析一下,一起来了解一下吧。首先我们需要知道的是,由于...
  • 一、继承 :就是子类继承父类的非私有属性和行为二、特点1、子类和父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字格式:super.父类成员变量名2、如果子类父类中出现...
  • 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承"关系的重要特性:通常简称为"IS_A"关系,UML类图可以这么表示:继承的语法class 子类名 extends 父类名 {……}注意:父类(parent class)和...
  • 例1.7.2(抽象类可以继承实体类)-class VehMark_to_win {void steer() {System.out.println("Turn steering wheel");}}abstract class Cart extends VehMark_to_win {//因为Cart是抽象的, 可以这里还是什么都不干}...
  • 在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体。...接口继承接口继承(inheritance)与类继承很类似,就是以继承的interface为基础,增添新增的接口方法原型。...
  • 我有一个抽象类Person和接口可比,它也用于程序的其他部分.目前我在Person中有一个方法compareTo().当我尝试编译时,我得到:The type Student must implement the inherited abstract methodComparable.compareTo...
  • 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体里加入这些...
  • 它已经继承过父类Enum了,且它的父类实现了serializable接口,即所有enum都实现了序列化而enum也不可以被继承,原因如下:写法是:public enum 枚举类名{变量列表用逗号隔开,最后一个变量后用分号结束;...
  • ##抽象类##- 概述在继承和多态时,讲到了父类的方法多数时候,是要被子类们重写,且各自的实现不尽相同。那么对于父类来说,其方法声明还有用,方法体就没用了,这样在父类中,就只保留方法的声明和空的方法体。这种...
  • 展开全部您好,提问者:1、抽象e69da5e6ba...3、如果这个抽象类继承了别的抽象类,那么可以不覆盖抽象方法。因为:这个抽象类也是抽象的,没办法实现方法体。例如一下代码:abstractclassA{ab...
  • 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:海子来源:博客园一....如果一个类含有抽象方法,则称这个类为抽象类抽象类必须在类前用abstract关键字修饰。因为抽...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 626,519
精华内容 250,607
关键字:

抽象类可以被继承吗