• Java基础教程——抽象类


    抽象类

    抽象类是介于普通类(class)和接口(interface)之间的一种特殊类。
    接口的方法都不实现,类的方法都必须实现,抽象类里的方法可以实现,可以不实现。

    Java 8之后接口中可以实现方法,抽象类的地位有点尴尬,不过因为历史代码中很多抽象类的应用,抽象类的概念也不会被淘汰。

    抽象方法:只有方法签名,没有方法实现,必须有abstract修饰。

    其实interface中的方法都是抽象方法,但正因为都是,所以不需要刻意声明为abstract。

    public abstract void 抽象方法(int 参数1, String 参数2);
    

    抽象类:

    • 声明为abstract的类是为“抽象类”
    • 有抽象方法的类必须声明为抽象类,但抽象类可以没有抽象方法
    • 抽象类不能被实例化,只能被继承;抽象类也是类,不能同时继承多个抽象类
    • 抽象类可以有构造方法,用于被子类调用。
    public abstract class 抽象类 {
    	public abstract void 抽象方法(int 参数1, String 参数2);
    	public void 非抽象方法() {
    		System.out.println("非抽象方法有用括号括起来的方法体");
    	}
    }
    

    抽象类的作用

    从语义的角度看,抽象类是从多个具体类中抽象出的父类,以抽象类为模板,可以避免子类设计的随意性。

    也是为了规范。

    示例:
    所有动物都需要吃,父类中可以统一实现;但是——
    犬科攻击动口,猫科攻击动手,在父类中不方便统一实现。此时建议在父类中定义为“抽象方法”

    public class 抽象类 {
    	public static void main(String[] args) {
    		Animal _charger = new 猫();
    		_charger.攻击();
    	}
    }
    abstract class Animal {
    	public void 吃() {
    		System.out.println("吃");
    	}
    	public abstract void 攻击();
    }
    class 猫 extends Animal {
    	public void 攻击() {
    		System.out.println("扑,拍,咬");
    	}
    }
    class 犬 extends Animal {
    	public void 攻击() {
    		System.out.println("咬");
    	}
    }
    

    抽象类 VS 接口

    相同点:
    |-包含未实现的方法(或者说,都包含抽象方法)
    |-本身不能实例化(都没有完全实现)

    不同点:

    接口 抽象类
    不能包含普通方法(不算默认方法) 可以包含普通方法
    可以实现多个 只能继承一个(毕竟也是类)
    只能定义“常量”,不能定义普通成员变量 可以定义普通成员变量
    没有构造方法 有构造方法
    不能定义初始化块 可以定义初始化块

    面向对象小结:

    面向对象相关单词:

    英文 中文
    Object-Oriented 面向对象
    object 对象
    class
    property 属性
    constructor 构造函数/方法
    abstraction 抽象
    encapsulation 封装
    inheritance 继承
    polymorphism 多态
    interface 接口
    overload 重载
    override 重写
  • 相关阅读:
    构建之法阅读笔记02
    4.7-4.13 第八周总结
    构建之法阅读笔记01
    顶会热词统计
    结对作业-四则运算升级版
    3.31-4.5 第七周总结
    大道至简阅读笔记03
    3.23-3.30 第六周总结
    第7周总结
    人月神话阅读笔记之三
  • 原文地址:https://www.cnblogs.com/tigerlion/p/11179165.html
Copyright © 2020-2023  润新知