精华内容
下载资源
问答
  • 抽象类的概念

    2018-08-13 13:57:00
    抽象类 //抽象类:当父类方法不确定时,可以用abstract...//抽象类不能实例化(他自己方法都不知道要干什么,类也是不完整,抽象出来) //抽象类可以没有抽象方法 public class 抽象类 { p...

    抽象类

    //抽象类:当父类方法不确定时,可以用abstract关键字来修饰该方法(抽象方法)
    
    //用abstract来修饰该类(抽象类)
    
    //抽象方法不实现(没有"{}"),即不能有实体
    
    //抽象类不能实例化(他自己的方法都不知道要干什么,类也是不完整的,抽象出来的)
    
    //抽象类可以没有抽象方法
    
     
    
    public class 抽象类 {
    
        public static void main(String[] args) {
    
            //匿名函数,在创建对象时实现方法
    
            Animal2 dog=new Animal2() {
    
                @Override
    
                public void cry() {
    
                    System.out.println("狗叫声");
    
                }
    
            };
    
            dog.cry();
    
            Cat2 cat=new Cat2();
    
            cat.cry();
    
        }
    
    }
    
    //如果一个类里有抽象方法,那么这个类必须是抽象类(加abstract)
    
    abstract class Animal2{
    
        String name;
    
        int age;
    
        public void eat(){
    
            System.out.println("可以有其他非抽象方法");
    
        }
    
        abstract public void cry();
    
    }
    
    //抽象类继承抽象类可以不实现抽象方法
    
    abstract class Animal3 extends Animal2{
    
        
    
    }
    
    //当一个类继承的父类是抽象类,需要把抽象类中所有的抽象方法实现
    
    class Cat2 extends Animal2{
    
        //实现父类的cry()
    
        public void cry(){
    
            System.out.println("猫叫声");
    
        }
    
    }

     

    转载于:https://www.cnblogs.com/xdzy/p/9467662.html

    展开全文
  • 抽象类的概念和作用

    万次阅读 多人点赞 2018-07-08 12:07:46
    一、抽象类的概念和作用1.抽象的定义  抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(比如:宝马、奔驰都属于汽车,汽车是抽象出来的概念)2.抽象类  Java中可以定义没有方法体的...

    一、抽象类的概念和作用
    1.抽象的定义
        抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(比如:宝马、奔驰都属于汽车,汽车是抽象出来的概念)
    2.抽象类
        Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。
    3.抽象方法的特点
        (1)只有方法头没有方法体的方法称之为抽象方法。(即只有方法的声明,没有方法的实现)
        (2)抽象方法用abstract关键字来修饰。
        (3)抽象方法代表一种不确定的操作或行为。(由子类去具体实现)
        (4)抽象方法不能被调用。
    4.抽象类的特点
        (1)定义中含有抽象方法的类叫做抽象类。
        (2)抽象类用abstract关键字来修饰。
        (3)抽象类代表一种抽象的对象类型。
        (4)抽象类不能实例化。
        (5)抽象类中可以有具体方法,可以没有抽象方法。(也就是说一个类中只要有一个方法是抽象方法那么这个类一定是抽象类,反过来,一个抽象类中可以没有抽象方法,可以带有具体
        实现的方法)
        (6)一旦一个类中有抽象方法,那么这个类必须也要用abstract来修饰,代表这个类是抽象类,它是不能被实例化的。
    如:
        ① A是一个抽象类
        public abstract class A{
            public void methodA(){
                System.out.println("test");
            }
        }

        ② public abstract void methodB();
        用abstract来修饰的方法称之为抽象方法,抽象方法的特点就是只有方法的声明,没有方法的实现。这里不能这样写:public abstract void methodB(){},因为写了大括号就代表有
    方法的实现,只不过这是一个空实现,即没有大括号的才称为方法的声明。

    public abstract class Employee {
    private int number;
    private String name;
    private double salary;

    public Employee(int number, String name, double salary) {
    this.number = number;
    this.name = name;
    this.salary = salary;
    }

    // 抽象方法的声明(抽象类中不推荐放具体实现的方法)
    public abstract void work();
    }
    // 一旦一个类继承了抽象类,那么这个类要么实现抽象类中的抽象方法,要么继续抽象下去。
    public class JavaTeacher extends Employee {


    public JavaTeacher(int number, String name, double salary) {
    super(number, name, salary);
    }

    @Override
    public void work() {
    System.out.println("上java课");
    }

    }
    public class Leader extends Employee {
    private double allowance;

    public Leader(int number, String name, double salary, double allowance) {
    super(number, name, salary);
    this.allowance = allowance;
    }

    @Override
    public void work() {
    System.out.println("培训新员工");
    System.out.println("设计课程体系");
    }

    }
    public class EmployeeDemo {
    public static void main(String[] args) {
    JavaTeacher javaTeacher = new JavaTeacher(1001, "张三", 10000);
    // 父类的引用变量可以引用其子类对象(这里抽象类Employee也是一个父类,通过父类的引用变量引用值实现多态),所以也可以这么写:
    // Employee javaTeacher = new JavaTeacher(1001, "张三", 10000);下同。
    javaTeacher.work();

    Leader leader = new Leader(101, "李四", 20000, 50000);
    leader.work();

    // 抽象类不能实例化
    // Employee employee = new Employee(1,"小王",2000,50000);
    }

    }

    备注:抽象类为什么不能实例化?

    首先抽象类不能实例化是一个java的语法规范。

    抽象类中是可以包含抽象方法,不是必须。如果一个抽象类没有一个抽象方法,那么他和一个普通java类就没有任何区别了,也就是说,在这种情况下没有abstract修饰都是一样的。定义了一个包含抽象方法的抽象类,其子类在继承自该抽象类的时候,子类就必须实现父类的所有抽象方法。之所以在java中存在这样一个语法规范,就是为了定义这种类型结构来解决生活中这样的一些实际问题。

    你看过周星驰的电影没,就是那个去水果店,揪住老板说要一斤水果!老板问他你要什么水果,他说他就要水果!这个水果就是抽象类,你如果能在水果店买到一斤叫水果的水果,那就能实例化一个抽象类。要跟现实生活联系起来。

    5.模板方法模式

    (1)定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为

    (2)意图:定义了在一个操作中的一个算法框架,把一些步骤推迟到子类去实现。模板方法模式让子类不需要改变算法结构而重新定义特定的算法步骤。

    public class TemplateDemo {
        public static void main(String[] args) {
            DBTeacher dbTeacher = new DBTeacher();
            dbTeacher.work();
            System.out.println("===========我是一道闪电=========");
            CTeacher cTeacher = new CTeacher();
            cTeacher.work();
        }
    }

    abstract class Teacher{
        // 老师工作的方法是一个流程,也可以认为是一个模板方法(即模板方法中的每一个步骤是固定的,老师授课按这个模板方法执行就可以了)
        public void prepared() {
            System.out.println("准备好白板笔");
            System.out.println("打开投影仪");
        }
        
        public void end() {
            System.out.println("关闭投影仪");
            System.out.println("锁教室门");
        }
        
        /**
         * 这是一个抽象方法由其子类去实现
         */
        public abstract void teaching();
        
        public void work() {
            // 授课前准备
            prepared();
            // 进行授课
            teaching();
            // 授课结束
            end();
        }
    }

    class DBTeacher extends Teacher{
        // 实现父类抽象的方法
        @Override
        public void teaching() {
            System.out.println("打开Oracle软件");
            System.out.println("书写sql指令");
            System.out.println("优化sql指令");
        }
    }

    class CTeacher extends Teacher {
        // 实现父类的抽象方法
        @Override
        public void teaching() {
            System.out.println("打开VM软件");
            System.out.println("书写C指令");
            System.out.println("调试C程序");
        }
    }

    展开全文
  • 在一个类中,如果该类中存在一个功能,仅仅方法声明,没有方法体(抽象方法),需要将该类定义为抽象类,如:动物–本身就不是具体(抽象动物类),将动物吃或者睡定义为抽象功能。 特点 (1)、如果一个类中有...

    概念

    在一个类中,如果该类中存在一个功能,仅仅方法声明,没有方法体(抽象方法),需要将该类定义为抽象类,如:动物–本身就不是具体的(抽象动物类),将动物的吃或者睡定义为抽象功能。

    特点

    (1)、如果一个类中有抽象方法,那该类一定是一个抽象类,如果一个类是抽象类,那该类不一定有抽象方法。
    (2)、抽象类不能实例化。
    (3)、抽象类通过子类实例化,父类引用子类对象
    (4)、抽象的父类是通过子类进行实例化,那么子类也是抽象类,子类也就不能实力化了,一定会存在一个具体子类

    格式

    ​ 权限修饰符abstract 返回值类型 方法名(形式参数);

    ​ abstract:表示抽象;

    ​ 可以修饰类,可以修饰成员方法。

    展开全文
  • Java关键字之abstract(抽象类的概念和使用)

    1、概述 
    (1)只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。使用 abstract 修饰符来表示抽象方法和抽象类。 
    (2)abstract修饰符表示所修饰的类没有完全实现,还不能实例化。如果在类的方法声明中使用abstract修饰符,表明该方法是一个抽象方法,它需要在子类实现。如果一个类包含抽象方法,则这个类也是抽象类,必须使用abstract修饰符,并且不能实例化。 
    (3)注意,抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。

    2、抽象类特点 
    (1)抽象类不能实例化,即不能对其用new运算符; 
    (2) 类中如果有一个或多个abstract方法,则该类必须声明为abstract; 
    (3)抽象类中的方法不一定都是abstract方法,它还可以包含一个或者多个具体的方法; 
    (4)即使一个类中不含抽象方法,它也可以声明为抽象类; 
    (5)抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。 
    (6)如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

    3、什么情况下,使用抽象类 
    (1)类中包含一个明确声明的抽象方法; 
    (2)类的任何一个父类包含一个没有实现的抽象方法; 
    (3)类的直接父接口声明或者继承了一个抽象方法,并且该类没有声明或者实现该抽象方法。

    4、代码展示 
    抽象类不能被实例化,抽象方法必须在子类中被实现。请看下面的代码:
     

    import static java.lang.System.*;
    public final class Demo{
        public static void main(String[] args) {
            Teacher t = new Teacher();
            t.setName("小明");
            t.work();
    
            Driver d = new Driver();
            d.setName("小陈");
            d.work();
        }
    }
    // 定义一个抽象类
    abstract class People{
        private String name;  // 实例变量
    
        // 共有的 setter 和 getter 方法
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return this.name;
        }
    
        // 抽象方法
        public abstract void work();
    }
    class Teacher extends People{
        // 必须实现该方法
        public void work(){
            out.println("我的名字叫" + this.getName() + ",大家好...");
        }
    }
    class Driver extends People{
        // 必须实现该方法
        public void work(){
            out.println("我的名字叫" + this.getName() + ",大家好...");
        }
    }
    /*
    运行结果:
    我的名字叫小明,大家好...
    我的名字叫小陈,大家好...
    */

     

    5、关于抽象类的几点说明 
    (1)抽象类不能直接使用,必须用子类去实现抽象类,然后使用其子类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例,也就是可以使用抽象类来充当形参,实际实现类作为实参,也就是多态的应用。 
    (2)构造函数和静态函数以及final修饰的函数不能使用abstract修饰符。 
    (3)如果试图创建一个抽象类的实例就会产生编译错误。 
    (4)如果一个类是非抽象类却包含一个抽象方法,就会产生编译错误。 
    (5)抽象类中有构造函数。如果抽象类是父类,需要给子类提供实例的初始化。

    6、abstract 关键字和哪些关键字不能共存? 
    final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。 
    private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。而抽象方法出现的就是需要被复写。 
    static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。
     

    展开全文
  • Java抽象类的概念和使用

    千次阅读 2019-06-15 21:09:57
    从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象。甚至,你可以只给出方法的定义而不实现,由子类根据具体需求来具体实现。 这种只给出方法定义而不...
  • 1什么是抽象类 抽象类是一个特殊的类,只能被继承,不能实例化 2为什么只能被继承,不能实例化 有个例子很好地说明了这点。 我们可以构造香蕉、苹果、梨之类的类,然后让它们继承水果这个的基类,水果的基类包含...
  • Java基础——抽象类的概念及特点

    千次阅读 2018-09-24 09:39:07
    1. 如何定义抽象类、抽象方法 ... 抽象类有构造方法,是给子类创建对象  4. 抽象类中可以定义抽象方法  语法:在方法修饰列表中添加abstract关键字,并且以“;”结束,不能带有“{}”  public abstract ...
  • C++抽象类的概念

    2014-07-07 16:46:10
    纯虚函数是在基类中声明虚函数,它在基类中没有定义,但要求任何派生都要定义自己实现方法。在基类中实现纯虚函数方法是在函数原型后加“=0” virtual void funtion1()=0 二、引入原因: 1、为了...
  • Java中为什么要有抽象类的概念

    千次阅读 多人点赞 2018-05-23 14:18:04
    首先你要看到普通类的缺点:假设我有一个父类:class Animal //创建一个动物类 { String name; int age; public void cry() //动物会叫 { System.out.println("不知道怎么叫!"); //可是我们不...
  • Java中抽象类的概念

    千次阅读 2009-11-01 21:18:00
    今天学习了Java中的抽象类的概念: 声明一个抽象类:abstract class 类名 ; 抽象类中必须包含一个抽象方法,抽象方法只有声明部分,没有实现方法,即没有方法体部分,如abstract 方法名() ; 前面学习的都...
  • 从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象。甚至,你可以只给出方法的定义而不实现,由子类根据具体需求来具体实现。 这种只给出方法定义而...
  • 派生(类的派生):在原有类的基础上建立新类并且添加新特征的过程 继承:子类不加修改延续父类的特征   2.单一继承:子类只有一个基类的继承 多重继承:子类拥有多个基类的继承叫多重继承   3.使用冒号(:...
  • 抽象类及接口的概念

    2018-04-19 11:33:19
    抽象类的概念: 针对一个事物,比如:动物类---->总体概括之前定一个具体的动物(---->必须给他的某个功能只是声明即可),只有,猫或者狗等等这些才是具体事物。 Java中,如果一个类中有一个方法声明(抽象...
  • 抽象类基本概念

    2018-04-09 03:13:26
    【90%正规代码 】在以后所有进行的项目开发之中,绝对不要出现一个类去继承一个已经实现好的类...抽象类的基本概念抽象类只是在普通类的基础上扩充了一些抽象方法而已。 所谓的抽象方法指的只是声明而未实现(没有...
  • 2.抽象类的概念 多个对象都具备相同的功能,但是该功能的具体实现细节又各不相同。 那么我们对此相同功能进行抽取,只抽取功能定义,只有功能声明,这种方法称为抽象方法 例: 狗和猫均有 eat() 功能,但是具体吃的...
  • 抽象类的一些概念

    2020-04-19 19:34:25
    抽象是把多个事物共性内容抽取出来,本质...2.抽象类不一定有抽象方法 但是有抽象方法类一定是抽象类 3.如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类 4.如果一个类中有了一个抽象方法,那么这个...
  • 抽象类的概念:包含一个抽象方法的类就称为抽象类。 抽象方法:只声明而未实现的方法称为抽象方法,抽象方法必须使用abstract关键字声明。 抽象类的使用规则: 抽象类和抽象方法都要使用abstract关键字声明。 ...
  • 接口和抽象类的概念: 抽象类: 在面向对象的领域内,一切都是对象,所有的对象都是通过类来进行描述的,但并不是所有的类都是用来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,需要其他类来支持,...
  • 抽象类的作用类似“模板”,其目的是要设计者依据它的格式来修改并创建新的类,但是不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由它来创建对象。但是在抽象类的使用中同样存在单继承的局限,即一个...
  • 概念:有时我们表达一些抽象东西,它是一种概括,不需要它成为一种实体,所以面向对象便有了抽象类。 具体来讲:一个员工,它属于一个公司,但是公司只是一个名称,我们不需要它成为一个实体,所以公司就是一个...
  • 抽象类概念及其作用

    千次阅读 多人点赞 2019-06-03 10:41:26
    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类抽象类除了不能实例化对象之外,...
  • 代码块抽象的概念1>抽象类的概述: 动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的。 我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须是抽象类。 2>抽象类的...
  • 抽象类,和java概念一样 interface接口 纯虚类,所有函数都是纯虚函数。纯虚函数和虚函数区别在于前者不包含定义,而后者包含函数体。 二、C++虚函数与JAVA中抽象函数比较 1:java中没虚函数概念。...
  • 抽象类的概念: 包含一个抽象方法的类就称为抽象类。 抽象方法:只声明但未实现的方法称为抽象方法,使用abstract关键字声明。 抽象类的定义及使用规则: abstract class A{ // 是定义了一个抽象类 public ...
  • 抽象类和接口 概念

    2018-09-05 14:34:37
    抽象类不能被实例化,但可以创建一个引用变量,其类型是一个抽象类,指向非抽象子类实例 抽象类与抽象方法使用: (1)抽象类中可以没有抽象方法,单包含了抽象方法类必须被定义为抽象类 (2)如果子类没有...
  • C#中的抽象类、抽象属性、抽象方法

    千次阅读 2020-06-10 00:51:31
    前言:本博文讲述了C#面向对象中的抽象类,通过本博文的阅读,读者可以掌握C#抽象类的概念、应用、好处以及一些特性。 文章目录一、抽象类概念二、示例讲解三、抽象类的作用四、使用抽象类的好处五、抽象类总结 一、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,179
精华内容 10,071
关键字:

抽象类的概念