精华内容
下载资源
问答
  • 抽象类可以用于创建具体对象吗
    千次阅读
    2022-03-28 21:47:47

    抽象类不能创建对象,其创建对象没有意义,但是抽象类可以保存一类事物具备的共同属性和行为,让子类进行继承。

    抽象类的构造方法不是给自己用的,而是为了让子类调用构造方法创建对象时初始化用的

    更多相关内容
  • 抽象类创建对象吗?

    千次阅读 2020-07-15 00:27:20
    抽象类是不能创建对象的原因: 1.子类更具体,父类更抽象,直接创建父类对象本身没有意义。 2.如果创建的是父类对象再调用方法的时候,调用的父类中的方法,而非子类的方法,它违背了多态的这种思想和设计 3.因为...

    什么是抽象类呢?

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

    抽象类是不能创建对象的原因:

    1.子类更具体,父类更抽象,直接创建父类对象本身没有意义。
    2.如果创建的是父类对象再调用方法的时候,调用的父类中的方法,而非子类的方法,它违背了多态的这种思想和设计
    3.因为父类引用指向子类对象时,调用的方法是子类重写的方法,一般父类中的描述不够具体,并不是说抽象类的构造方法没有意义,那么在创建子类对象时需要先调用父类的构造方法。
    4.抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)
     

    展开全文
  • Java-抽象类

    千次阅读 2021-02-26 09:29:41
    抽象类含有抽象方法的类就是抽象类1) 抽象方法:该方法有返回值,有参数,就是没有方法体,该方法没有方法实现2) 抽象方法的格式:abstract 返回值类型 方法名(参数列表);3) 抽象类需要靠子类来重写抽象方法,以...

    抽象类

    含有抽象方法的类就是抽象类

    1) 抽象方法:该方法有返回值,有参数,就是没有方法体,该方法没有方法实现

    2) 抽象方法的格式:

    abstract 返回值类型 方法名(参数列表);

    3) 抽象类需要靠子类来重写抽象方法,以实现其功能

    public classTest1 {//抽象类:含有抽象方法的类//抽象方法:没有方法体的方法

    public static voidmain(String[] args) {

    Taxi taxi=newTaxi();

    taxi.name="出租车";

    taxi.start();

    taxi.run();

    taxi.stop();

    }

    }//定义一个抽象类Car:属性:名字,价格,速度//方法:启动,运行,刹车,全是抽象方法

    abstract classCar{

    String name;doubleprice;intspeed;public abstract voidstart();public abstract voidrun();public abstract voidstop();

    }class Taxi extendsCar{//抽象类是依靠子类,来实现其功能(子类重写抽象方法)

    public voidstart() {

    System.out.println(name+"行驶");

    }public voidrun() {

    System.out.println(name+"启动");

    }public voidstop() {

    System.out.println(name+"刹车");

    }

    }

    4) 抽象类不能直接实例化(创建对象)

    public classTest1 {public static voidmain(String[] args) {//Foo1 foo1=new Foo1();---报错

    }

    }abstract classFoo1{abstract voidshow();

    }

    5) 可以使用抽象类声明一个对象,然后利用该抽象类的子类来创建对象

    格式:抽象类 对象名-->定义对象

    对象名=new 子类构造方法-->创建对象

    抽象名 对象名=new 子类构造方法

    public classTest1 {public static voidmain(String[] args) {

    Koo1 koo1=new Koo2(); //抽象类名(父类) 对象名=new 子类的构造方法

    koo1.show();

    }

    }abstract class Koo1{//父类---声明(定义)对象

    public abstract voidshow();

    }class Koo2 extends Koo1{//子类---创建对象

    public voidshow() {

    System.out.println("昨天下雨了");

    }

    }

    6) 父类声明指向子类引用

    格式:父类 对象=new 子类的构造方法

    编译时(javac)           运行时(java)

    用这种方式创建的对象,可以访问父类的除重写以外所有的方法,可以访问子类重写父类的方法

    唯一不能做的事,就是访问子类独有的方法

    public classTest1 {public static voidmain(String[] args) {

    Eoo eoo=newEoo2();

    eoo.show();//访问子类中重写父类的方法

    eoo.print();//父类中的普通方法//eoo.speak();---报错//不能访问子类独有的方法

    }

    }classEoo{voidshow(){

    System.out.println("今天是个好天气");

    }voidprint(){

    System.out.println("今天是周一");

    }

    }class Eoo2 extendsEoo{voidshow(){

    System.out.println("天气好好");//重写

    }void speak(){//子类独有的方法

    System.out.println("说话");

    }

    }

    7) 抽象类跟一般类是一样的,只是抽象类含有抽象方法(没有方法体的方法)

    抽象类需要靠子类来重写所有的抽象方法,以实现其功能

    创建对象:

    1.直接使用子类来声明和创建对象

    2.父类声明指向子类的对象

    public classTest1 {public static voidmain(String[] args) {

    Person person=new Worker("张",23,"男",5000);

    person.print();

    person.show();

    }

    }//设计Person类型,属性:姓名,年龄,性别//构造方法:1.空参的构造方法//2.带(姓名,年龄,性别)的构造方法//方法:show():显示姓名,年龄属性//抽象方法print();//设计Worker类型,属性:姓名,性别,年龄,工资//构造方法:给所有的属性赋值//方法:重写print()方法,显示该对象所有的属性//

    abstract classPerson{

    String name;intage;

    String sex;

    Person(){}

    Person(String name,intage,String sex){this.name=name;this.age=age;this.sex=sex;

    }voidshow(){

    System.out.println(name+","+age);

    }public abstract voidprint();

    }class Worker extendsPerson{doublesalary;

    Worker(String name,int age,String sex,doublesalary){super(name,age,sex);this.salary=salary;

    }public voidprint() {

    System.out.println(name+","+age+","+sex+","+salary);

    }

    }

    设计模式---工厂模式(了解)

    用一个类来帮我们创建和管理对象,就是工厂模式

    public classTest1 {//工厂类中用来提供对象的方法,最好设计静态方法,易于调用

    public static voidmain(String[] args) {

    Emp emp=EmpFactory.getInstance();

    emp.show();;

    }

    }classEmpFactory{public staticEmp getInstance(){

    Emp emp=new Emp("刘",45);returnemp;

    }

    }classEmp{

    String name;intage;

    Emp(String name,intage){this.name=name;this.age=age;

    }voidshow(){

    System.out.println(name+","+age);

    }

    }

    public classTest1 {public static voidmain(String[] args) {

    Car car=CarFactory.getInstance(1);

    car.name="Bmw";

    car.show();

    Car car1=CarFactory.getInstance(2);

    car1.name="Benz";

    car1.show();

    }

    }//设计一个父类Car,属性:名字//构造方法:空参构造方法,带名字的构造方法//方法:show显示该Car的名字//设计一个Car的子类Bmw,属性:速度//设计一个Car的子类Benz,属性:价格//设计一个Car的子类QQ,属性:颜色//设计一个工厂,可以根据用户的请求来创建不同的子类对象

    classCar{

    String name;

    Car(){}

    Car(String name){this.name=name;

    }voidshow(){

    System.out.println(name);

    }

    }class Bmw extendsCar{intspeed;

    }class Benz extendsCar{doubleprice;

    }class QQ extendsCar{

    String color;

    }//分析:参数来代表用户不同的请求//1---BMZ,2---Benz,3----QQ//工厂中获得对象的方法,可以根据调用参数的不同,返回不同的Car的子类对象

    classCarFactory{public static Car getInstance(inttype){

    Car car=null;if(type==1){

    car=newBmw();

    }else if(type==2){

    car=newBenz();

    }else if(type==3){

    car=newQQ();

    }returncar;

    }

    }

    展开全文
  • java基础之继承,抽象类

    千次阅读 2021-03-05 15:25:16
    抽象类 :包含抽象方法的类 格式: abstract class 类名字 { } 2、抽象的使用:继承抽象类的子类必须重写父类所有的抽象方法 3、抽象类的使用注意事项 a、抽象类不能创建对象,如果创建,编译无法通过而报错。...

    一、继承 :就是子类继承父类的非私有属性和行为

    二、特点

    1、子类和父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字

    格式:super.父类成员变量名

    2、如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写

    重写【覆盖】:子类中出现与父类一模一样的方法时(返回值、方法名、参数列表等都相同),子类的方法会覆盖父类的方法

    注意事项

    a. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。

    b. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。

    3、继承关系中:字父类的构造方法特点

    a.子类构造方法中不写父类构造方法,会默认隐含super()调用,所以一定是先调用父类构造,然后调用子类构造

    b.子类构造可以通过super关键字来调用父类构造,从而初始化父类成员变量

    c.super的父类构造调用,必须放在子类构造方法的第一个语句,而且仅能出现一次

    三、 抽象类

    1、定义

    抽象方法 : 没有方法体的方法。

    格式:

    修饰符 abstract 返回值类型 方法名 (参数列表);

    抽象类 :包含抽象方法的类

    格式:

    abstract class 类名字 { }

    2、抽象的使用:继承抽象类的子类必须重写父类所有的抽象方法

    3、抽象类的使用注意事项

    a、抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。

    理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。

    b、可以有构造方法,是供子类创建对象时,初始化父类成员使用的。

    理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。

    c、 抽象类中,可以包含非抽象方法,但是有抽象方法的类必定是抽象类。

    理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。

    d、抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。

    理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义

    展开全文
  • 抽象类和接口

    千次阅读 2020-11-24 19:38:35
    抽象类 ​ 概述 ​ 父类当中的方法,被他的子类们重写,子类的各自实现又不一样。那么父类的方法声明和方法体,只有声明还有意义,而方法体内容则没有存在的意义。我们把这种没有方法体内容的方法称为抽象方法。...
  • 面向对象编程之继承、多态、封装、抽象类、接口、包继承类的继承格式为什么要继承继承的特点继承的种类及关键字访问权限多态向上转型动态绑定方法重写重写和重载的区别比较多态的优点封装实现Java的封装封装的优点...
  • 创建型模式之简单工厂模式——接口和抽象类

    万次阅读 多人点赞 2021-10-05 09:58:45
    应用场景 工厂负责创建对的对象比较少,因为不会造成工厂方法中的业务逻辑过于复杂 客户端只知道传入工厂的参数,对如何创建对象不关心 由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下...
  • JAVA基础知识总结7(抽象类 | 接口)

    千次阅读 2021-03-14 14:54:36
    抽象类:abstract1.抽象:不具体,看不明白。抽象类表象体现。2.在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abstract所标示,声明为...
  • 接口和抽象类的区别(绝对经典)

    万次阅读 多人点赞 2020-08-12 17:40:36
    抽象类: 构造方法:有构造方法,用于子类实例化使用。 成员变量:可以是变量,也可以是常量。 成员方法:可以是抽象的,也可以是非抽象的。 接口: 构造方法:没有构造方法 成员变量:只能是常量。默认修饰符:...
  • 在python中,可以通过class关键字定义,然后通过定义的创建实例对象。语法格式如下: calss 类名: 体 注意事项 在python中使用class关键字来定义,定义时需要注意以下几个事项: (1)代码块以...
  • Java——抽象类GeometricObject

    千次阅读 多人点赞 2020-04-08 15:11:29
    (仅记录个人的学习之路) 本题目涉及的知识点: 类的继承:Triangle类和Rectangle类,其父类为GeometricObject; 方法覆盖:Triangle类和...父类GeometricObject为抽象类,定义了抽象方法getArea()和getPerimeter(...
  • Java中抽象类与方法的重写

    千次阅读 2020-11-10 22:29:33
    类的具体实现:创建对象 抽象方法存在的意义是什么? 用于定义功能,明确该类具备此功能-----规则 特点: 1.抽象类可以有抽象方法,也可以有非抽象的方法 2.抽象类可以有构造器,但是不能创建
  • 定义一个抽象类shape,它包含一个抽象方法getArea(),从Shape类派生除Rectangle和Circle类,这两个类都用getArea()方法计算对象的面积。编写应用程序使用Rectangle和Circle类。 代码如下: abstract class Shape { ...
  • C#中抽象类与抽象方法的详解

    万次阅读 2020-06-17 17:41:11
    抽象类的含义是什么? 抽象类怎么创建? 抽象类的规则有哪些? 抽象方法? 抽象类被运用的意义是什么?
  • 3.2、抽象一个和实例化对象

    千次阅读 2018-03-28 19:20:36
    一、抽象一个 二、实例化对象 1、实例化对象 2、对象类型在内存中分配情况 三、$this 四、构造函数和析构函数
  • 目录1. 如何调用抽象类中的抽象方法?2. 如何调用接口中的抽象方法? 1. 如何调用抽象类中的抽象方法? 2. 如何调用接口中的抽象方法?
  • Java抽象类

    千次阅读 2021-04-23 19:02:34
    文章目录抽象类1.1 概述由来定义1.2 abstract使用格式抽象方法定义格式:抽象类抽象的使用1.3 注意事项 抽象类 1.1 概述 由来 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法...
  • 新手小白学JAVA 抽象类

    万次阅读 多人点赞 2021-05-11 11:01:52
    Java中可以定义被abstract关键字修饰的类,被abstract关键字修饰的类叫做抽象类 如果一个类含有抽象方法,那么它一定是抽象类 抽象类中的方法实现交给子类来完成 3.2 抽象方法的格式 权限修饰符 abstract 返回值类型 ...
  • 回想前面我们的猫狗案例,提取出一个动物,并且我们在前面也创建了动物对象,其实这是不对的!为什么呢? 因为我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。所以说,动物...
  • Java基础系列18-抽象类abstract

    千次阅读 2021-08-18 15:45:18
    创建动物对象的,其实这是不对的。为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。   所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有...
  • java 的接口可以实现接口吗?抽象类呢?

    万次阅读 多人点赞 2017-05-15 15:52:56
    面试中可能会遇到这样的问题: 1.接口可以实现接口吗? ans:不可以. 2.抽象类可以实现接口吗? ans:可以
  • 抽象类

    千次阅读 2019-01-29 16:30:36
    抽象类的概念 Java中允许在类中只声明方法而不提供方法的实现。这种只有声明而没有方法体的方法成为抽象方法,而包含一个或者多个抽象方法的类称为抽象类。 抽象方法是通过指定abstract关键字来创建。抽象方法没有...
  • 创建型设计模式——抽象工厂模式

    千次阅读 2022-02-11 10:19:11
    抽象工厂模式: 定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。 从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者...
  • java 继承、super、this、抽象类

    万次阅读 2022-05-04 16:48:34
    java 继承、super、this、抽象类
  • c++中的抽象类

    千次阅读 2016-06-10 11:39:38
    编程过程中可以将这些类设置为抽象类,以防止它们创建对象。 只要一个类中出现纯虚函数,那么这个类就是抽象类。 Class Animal{  Public: virtual void show() = 0;//纯虚函数的表达 }; 抽象
  • 接口和抽象类的区别

    万次阅读 多人点赞 2018-08-12 21:38:36
    接口和抽象类有什么区别 你选择使用接口和抽象类...抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。 ...
  • Java中抽象类和接口中有构造方法吗?

    千次阅读 2019-04-18 20:22:00
    (1) Java中抽象类和接口中有构造方法吗? ①在接口中 不可以有构造方法 在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。 A. 构造方法用于初始化成员变量,但是接口成员变量是常量,无需...
  • Java 抽象类 使用方法【非常详细】

    千次阅读 2017-12-14 15:16:57
    普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。 那么什么叫抽象方法呢...
  • Java学习笔记一面向对象抽象类

    千次阅读 2020-03-16 12:25:28
    抽象方法和抽象类必须使用abstract
  • Java中抽象类和接口中有构造方法吗?

    万次阅读 多人点赞 2018-04-11 00:40:58
    它们的语法区别: 1)接口不能有构造方法,抽象类可以有。 2)接口不能有方法体,抽象类可以有。 3)接口不能有静态方法,抽象类可以有。 4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 425,319
精华内容 170,127
关键字:

抽象类可以用于创建具体对象吗