精华内容
下载资源
问答
  •  抽象类中的构造方法其实是用来给继承子类来用的,因为构造方法相当于初始化方法,当子类调用构造方法时必须调用父类构造方法,所以你可以在子类产生对象 时抽象类中按需求初始化抽象类中的字段以及执行一些初始...
    package com.wtd;
    
    public abstract class Car {
        private String name= "car";
    
        public Car(String name) {
            this.name = name;
        }
    }
    
    
    public class JeepCar extends Car {
        public JeepCar(String name){
            super(name);
        }
    }

    现在我要创建JeepCar的实例,JeepCar jC= new JeepCar();那么我在debug的过程中,看到jvm运行的时候,先调用抽象父类的构造器Car(){},将属性初始化,然后回到JeepCar(){}子类构造器。

    疑问:因为知道抽象类是不能初始化的,那么super(name)调用父类构造器,会初始化父类实例吗?如果不初始化父类实例,那么也就是说调用构造器并不一定初始化实例了,那这里的super(name)又有什么用处呢?

    对这些疑问,自己很迷惑,所以只有求助于网络了。从网上找了些感觉比较靠谱的解释。

    解释1:

      调用子类构造方法都会调用它的直接父类的构造方法。可以认为new才会返回一个实例的引用,而抽象类是不能new的(这个是规定,没理由)。
    调用子类构造方法是调用了它的抽象父类的构造方法,但构造方法是用来做初始化工作的,它并不会返回实例。

    解释2:

      抽象类中的构造方法其实是用来给继承的子类来用的,因为构造方法相当于初始化方法,当子类调用构造方法时必须调用父类构造方法,所以你可以在子类产生对象 时抽象类中按需求初始化抽象类中的字段以及执行一些初始化代码。其实并不是一定要生成某个类的实例才调用构造方法,子类也需要调用父类构造方法。而生成实 例也并不一定会调用构造方法,在某些特殊实现中或者特殊情况下,生成实例不会调用构造方法。而调用了构造方法也不一定就生成了一个实例,但是那一定是一个 实例调用的,就像一个普通的实例方法一样。

    解释3:

      抽象类不能被实例化是说Person p=new Person();这样是错误的;但是Person p=new Employee(); 是可以的,创建子类的实例,父类的引用指向它
    在上述主程序中,new Employee后,它会初始化对象,初始化顺序为:
    父类静态块初始化---->子类静态块初始化---->父类非静态块初始化---->父类构造方法---->子类非静态块初始化---->子类构造方法。(先静后动,先父后子) 
    这个主程序会先初始化person类的非静态属性和构造函数再初始化employees类的非静态属性和构造函数

    这就是你第一个问题的当子类的父类为抽象类时,构造方法如何追溯?而抽象类作为父类也会创建实例么?没有创建实例只是构造函数在对抽象类Person的属性初始化,对于一个类的声明,赋值     和使用两件事情,前者不需要实例化,后者必须实例化 。

     

    自己的简单总结:类的构造器,不论抽象还是非抽象,作用都一样,就是初始化属性的;

            只有构造器和new连在一块使用时,才是创建类的实例(对象)。

            抽象类中的构造方法是怎么回事?就是初始化属性的作用

        

    转载于:https://www.cnblogs.com/westward/p/5323111.html

    展开全文
  • 继承抽象类子类必须重写抽象类的方法 转载于:https://www.cnblogs.com/classmethond/p/9926283.html

    继承抽象类的子类必须重写抽象类的方法

    转载于:https://www.cnblogs.com/classmethond/p/9926283.html

    展开全文
  • 问题:子类继承抽象父类的方法,子类重写全部的父类抽象方法,但是不写方法体。那子类还是抽象的么? 详细:例如 父类public abstract void a();子类写 void a(){}不写方法体 ,可以咩。。必须要实现才可以么...
    问题:子类继承抽象父类的方法,子类重写全部的父类抽象方法,但是不写方法体。那子类还是抽象的么?
    
    详细:例如 父类public abstract void a();子类写 void a(){}不写方法体 ,可以咩。。必须要实现才可以么。。。?随便写点方法体?
    回答:
    void a(){
    }
    里面 {} 就是方法体了,算是实现父类方法了。
    如果写成 void a(); 这个还是抽象方法。
     
    补充 :上一个问题结束的太快,我都无法补充了。
    追问:啊哈哈哈哈哈哈哈,,,sorry。。。怪我  只要有花括号就是 实现方法了是这意思吧哈。
    补充:是的,方法名后吗花括号以及它包含的内容都是方法体。


    问题2:书上写如果抽象父类的子类不能实现所有抽象方法,那么子类也是抽象的。那么问题来了,如果父类有5个抽象方法,子类写了4个但是都实现了,那之类算抽象类还是普通类呢?抽象类不能用new来创建实例的话,那怎么引用抽象类?有什么类似的代码吗?
    回答:
    如果没有实现抽象父类的全部抽象方法,那么子类只能定义为抽象类
    public abstract class Shape {
        public abstract void getArea();
    }
     
    public class Circle extends Shape {
        private int radius = 5;
        public void getArea(){
            System.out.println(Math.pi * this.radius * this.radius);
        }
    }
     
    public class Test{
        public static void main(String[] args){
            Shape s = new Circle();
            s.getArea();
        }
    }


    展开全文
  • 继承抽象类在实现接口 class C extends B implements A interface A{ public abstract void say(); } abstract class B{ public abstract void fun(); } class C extends B implements A{ public void say() ...

    先继承抽象类在实现接口
    先写extends,后写implements

    interface A{
    	public abstract void say();
    }
    
    abstract class B{
    	public abstract void fun();
    }
    
    class C extends B implements A{
    	public void say() {
    		System.out.println("Hello!");	
    	}
    	
    	public void fun() {
    		System.out.println("GO!");
    	}
    }
    public class Text{
    	public static void main(String[] args) {
    		C c=new C();
    		c.say();
    		c.fun();
    	}
    }
    

    题目

    大一下Java期末考

    Description

    请你使用面向对象的概念表示出下面的一所公司:
    去西餐餐馆吃一顿饭,一般情况下,菜的次序分为前菜、主食、饭后甜点
    菜单接口Menu,该接口有两个方法,获取顾客的点餐记录getOrderList(),获取顾客消费的总价钱getTotalValue()。
    抽象菜的次序类Dishes,包含了名字name,该次序中的点菜记录orderList,点中该次序点菜的总价totalValue,抽象方法获取该次序点菜的详细信息的方法getDisMessage()。
    抽象菜类Course,包含了菜的名字name,菜的价格price,菜的次序,以及getter和setter方法,一个抽象方法获取员工信息的方法getCourseMessage()。
    请你写三个类继承菜的次序类来表述前菜、主食、饭后甜点,写一个类实现菜单接口,写一个类来继承菜类,并使用菜单接口Menu,输出点餐记录,费用总和。

    Input

    只有一组案例,先输入一个数字n表示点菜的数量,接下来的有n行数据,每行表示一个菜的信息,一共有3个数据分别表示:菜名、菜的次序、菜的价格。

    Ouput

    输出点餐记录,费用总和。

    Sample Input

    5
    蛋糕 饭后甜点 25
    水果沙拉 前菜 15
    意大利面 主食 60
    牛排 主食 78
    提拉米苏 饭后甜点 45

    Sample Output

    前菜支出15元,一共有1道菜: 菜名:水果沙拉 次序:前菜 价格:15元 主食支出138元,一共有2道菜: 菜名:意大利面 次序:主食 价格:60元 菜名:牛排 次序:主食 价格:78元 饭后甜点支出70元,一共有2道菜: 菜名:蛋糕 次序:饭后甜点 价格:25元 菜名:提拉米苏 次序:饭后甜点 价格:45元 一共点了5道菜,总共消费223元

    展开全文
  • ##IDEA子类继承抽象父类中怎么快速重写父类的构造方法:alt + 回车 其中,注意以下几点: 1、光标必须在父类名称后面,不能有空格。即光标在按快捷键时,必须是在 父类名 { 之间,且紧挨着父类名。 !abstract抽象类...
  • 继承抽象类子类需要把抽象类中的方法重写一遍吗? 抽象类中的非抽象方法不用重写,其他必须重写,接口的方法必须重写; 接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补...
  • 子类A继承抽象类B,就一定要重写B的抽象方法 抽象方法没有方法体,只有个定义。如:public abstract void a(); 你某个类继承上面的类是,必须实现那个方法“a” 。 void a(){ 具体操作如输出一句话: System.out....
  • 父类为抽象类子类继承父类时,父类有的成员变量,方法,子类都有,但是,子类要重写父类里面的抽象方法。 //父类 public abstract class AbstractLogger { public static int INFO = 1; public static int DEBUG...
  • //一个子类可以同时继承抽象类和实现接口 //接口 interface A{ public static final String FLAG="天河学院"; public abstract void print(); public abstract String getInfo(); } //抽象类 ...
  • 抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。 接口类继承,如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以...
  • 普通类继承抽象类,重写所有抽象类方法;(不包括普通方法) 普通类继承接口,重写所有接口方法。(不包括default关键字修饰的方法) 详解见下: 1. 普通类继承,并非一定要重写父类方法。 2. 抽象类继承,...
  • Java-子类同时继承抽象类和实现接口

    千次阅读 2013-07-16 10:59:51
    interface A //定义接口 {  public String name=null;  public void print();  public void tell(); } abstract class B {  public abstract void say(); //定义一个抽象类 } class X ext
  • java-抽象类和继承抽象类

    万次阅读 2018-02-09 16:17:15
    抽象类和继承抽象类 抽象类不能直接实例化,需要创建一个指向自己的对象引用(其子类)来实例化 代码: public class Main { public static void main(String[] args) { /* People people = new People(); *...
  • 普通类继承抽象类,重写所有抽象类方法;(不包括普通方法) 普通类继承接口,重写所有接口方法。(不包括default关键字修饰的方法) 详解见下: 1.普通类继承,并非一定要重写父类方法。 2.抽象类继承,如果...
  • 第六章 类的继承抽象类与接口通过本章的学习主要掌握以下知识点 类的继承 子类的创建 调用父类中特定的构造方法 在子类中访问父类的成员 覆盖 抽象类 接口 内部类与匿名类 包 本章的重点 类的继承 覆盖 抽象类 接口...
  • java抽象类+继承+super用法和this异同

    千次阅读 多人点赞 2019-01-06 14:57:06
    抽象类 抽象类顾名思义也是类,其命名也暗示它是在类的基础上加以限制(加强条件)而来 1 定义限制 至少含有一个抽象方法,...子类继承抽象类时,必须实现所有抽象方法 super拿来干啥?? 这个结合代码将比...
  • 父类和子类的问题困扰了我许久。...假如父类是一个抽象类的情况呢? 考虑下面的抽象类edge。 其中edge没有实现也没有定义ForwordConnetc();方法 假如我们的类有ForwordConnection继承Edge呢? 我...
  • 继承 抽象类 接口

    2021-06-11 16:50:42
    2.Java 中一个子类只能继承一个父类 (而C++/Python等语言支持多继承). 3.子类继承父类的所有 public 的字段和方法. 4.对于父类的 private 的字段和方法, 子类中是无法访问的. 5.子类的实例中, 也包含着...
  • 继承抽象类和接口的区别

    千次阅读 2018-07-17 17:32:18
     抽象类和接口都是在一定程度上体现到了java的多态特性。那么在使用场景上,它们有什么区别呢? 在语法方面:   抽象类:  1.由abstract关键词修饰的类称之为抽象类。   2.抽象类中没有实现的方法称之为...
  • 抽象类

    千次阅读 2018-07-19 10:16:05
    1、子类继承抽象类的话,必须覆写抽象类的所有抽象方法 abstract class LeagueOfLegendsPlayer { public static final String TEAM = "RNG"; private String name = "Uzi"; public String ...
  • 2:抽象类继承: 如果子类是一个抽象类,并不要求重写父类中的方法 如果不是一个抽象类,则重写父类中的抽象方法 3:接口类继承: 如果是一个子接口,则可以扩展父接口的方法 如果是一个子抽象类,可以部分或全部重写负接口...
  • 抽象类继承

    千次阅读 2019-09-22 15:56:23
    抽象类的继承 抽象类的定义(可以构造方法) ...继承抽象类,抽象方法必须要重写! public class Cat extends Animal { public Cat() { System.out.println("子类构造方法"); } @Override public void eat() { Sy...
  • 抽象类可以继承实体类吗?

    千次阅读 2018-04-24 03:03:56
    举例:java中object是一个实体类,其他的类包括抽象类大多继承object。但是有一个前提条件是实体类必须有明确的构造函数。什么是明确的构造函数?首先要了解java的继承:子类继承父类的所有但是不包括父类构造,子类...
  • 抽象类和类的继承。 创建抽象类Person,具有name属性,包含一个参数——姓名的构造方法,具备显示类信息的抽象方法display()。 创建Person的子类Student,属性包括姓名、年级、专业。重写父类的抽象方法。注意在类...
  • 如果一个具体子类继承抽象类,那么要实现抽象父类中的所有抽象方法;在子类中重写父类方法时,访问级别要大于等于原有访问级别;  接口:是一种统一的标准,是一个特殊的“模版”  接口中只能有:1、常量2、抽象...
  • Java—继承抽象类

    2018-08-26 22:19:11
    继承抽象类 继承:对个类有共同的成员变量和成员方法,抽取到另外一个类中(父类),再让多个类去继承这个父类 继承的特点:单一继承,只能继承一个父类; 支持多层继承继承中成员变量的特点: 1.子类...
  • 抽象类与接口

    万次阅读 2015-11-14 17:16:51
    区别 抽象类 接口 关键字 abstract class interface 概念 不能实例化的类,可能包含抽象方法 抽象方法和静态常量的...子类继承抽象类 实现类实现接口 继承或实现关键字 extends impleme
  • 抽象类和接口

    千次阅读 2020-10-01 13:21:40
    抽象类抽象类接口 抽象类 抽象类的定义:修饰符可以用来修饰方法,也可以修饰类。如果修饰方法,那么就是抽象方法,...子类继承抽象类,那么就必须要实现抽象类没有实现的抽象的方法,否则该子类也要声明为抽象类。
  • python3 抽象类笔记抽象类 (作为学习笔记,仅供参考) ...子类继承抽象类,则必须实现该抽象类内的全部抽象方法 python3 通过abc模块进行对抽象类的定义 import abc class Person(metaclass=abc.ABCMeta):...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 317,128
精华内容 126,851
关键字:

子类继承抽象类