zoukankan      html  css  js  c++  java
  • Java基础系列

    package com.company;
    
    /**
     * 抽象类继承
     * 用abstract修饰类就是抽象类
     * 用abstract修饰方法就是抽象方法(一般使用比较少)
     * 抽象类不能被实例化
     */
    public class Main {
        public static void main(String[] args) {
            Animal an = new Cat();
            an.cry(); //输出 “猫叫,喵喵喵”
            an = new Dog();
            an.cry();  //输出 “狗叫,汪汪汪”
    
            Cat cat1 = new Cat();
            cat1.eat(); //输出 “猫爱吃鱼”
        }
    }
    
    /**
     * 定义一个动物抽象类
     */
    abstract class Animal {
        private int age;
        private String name;
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        abstract public void cry();
    }
    
    /**
     * 猫类(继承动物类)
     */
    class Cat extends Animal {
        /**
         * 实现抽象父类中的具体方法
         */
        @Override
        public void cry() {
            System.out.println("猫叫,喵喵喵");
        }
    
        /**
         * 子类自有方法
         */
        public void eat() {
            System.out.println("猫爱吃鱼");
        }
    }
    
    /**
     * 狗类(继承动物类)
     */
    class Dog extends Animal {
        /**
         * 实现抽象父类中的具体方法
         */
        @Override
        public void cry() {
            System.out.println("狗叫,汪汪汪");
        }
    }

    抽象类:

    抽象类就是不能使用new方法进行实例化的类(不能被实例化,可以有多个抽象方法),即没有具体实例对象的类,抽象类有点类似于“模板”的作用,目的是根据其格式来创建和修改新的类,对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象,当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract,在抽象类中的成员方法可以包括一般方法和抽象方法

    抽象类的关键字:abstract

    abstract 关键字,和哪些关键字不能共存?

    final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
    private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。
    而抽象方法出现的就是需要被复写。
    static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了

    java中抽象类的特点:

    1. 如果一个类中有抽象方法,那么这个类一定是抽象类

     2. 抽象类中不一定有抽象方法

     3. 抽象类中可以存在抽象方法

     4. 抽象类中可以存在构造方法

     5. 抽象类中可以存在普通属性、方法、静态属性和静态方法

     6. 抽象类中的抽象方法需要有子类实现,如果子类不实现,则子类也需要定义为抽象的

    7,抽象方法和抽象类都必须被abstract关键字修饰。

    8,抽象类不可以用new创建对象。因为调用抽象方法没意义

    9:抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法

    接口和抽象类的区别之处:

    1. 接口中所有的方法隐含都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法

    2. 类可以实现很多个接口,但是只能继承一个抽象类

    3. 类可以不实现抽象类和接口声明的所有方法,在这种情况下,类也必须得声明成是抽象的

    4. 抽象类可以在不提供接口方法实现的情况下实现接口

    5. java接口中声明的变量默认都是final的,抽象类可以包含非final变量

    6. java接口中的成员函数默认都是public的,抽象类中的成员函数可以是private,protected或者是public的

    7. 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是如果它包含main方法的话是可以被调用的

    8:抽象类中可以有普通方法,接口中不能。
    9:抽象类可以有构造,接口不能
    10:抽象类中可以有普通字段,而接口中不行
    11:抽象类不能实现多继承,接口可以
    12:符合isa关系的选用抽象类,符合hasa关系的选用接口比抽象类抽象程度更高
  • 相关阅读:
    EasyDarwin开源流媒体服务器实现RTSP直播同步输出MP4、RTMP、HLS的方案思路
    OBS桌面视频直播软件/推流工具使用指南
    C++界面库
    . net 源代码调试
    WPF学习之X名称空间详解
    NSIS安装程序制作工具判断系统是否安装.NET
    Qt学习笔记常用容器
    快捷键
    Python中if __name__ == '__main__':作用
    python中__init__.py文件的作用
  • 原文地址:https://www.cnblogs.com/smartsmile/p/11535413.html
Copyright © 2011-2022 走看看