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关系的选用接口比抽象类抽象程度更高
  • 相关阅读:
    ‘Host’ is not allowed to connect to this mysql server
    centos7安装mysql
    further configuration avilable 不见了
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    hadoop启动 datanode的live node为0
    ssh远程访问失败 Centos7
    Linux 下的各种环境安装
    Centos7 安装 python2.7
    安装scala
    Centos7 安装 jdk 1.8
  • 原文地址:https://www.cnblogs.com/smartsmile/p/11535413.html
Copyright © 2011-2022 走看看