抽象类作为父类,不能实例化自己类型的对象,但可以通过向上转型实例化子类对象。

public abstract class Animal{  }

比如eat(); ,每个动物子类都应有自己的方法,那Animal类的eat()方法是无用的。就可以把Animal类定义为abstract。

Animal animal=new Animal();   //定义为abstract的Animal类,此句会编译错误,不能实例化,可以对下一句虽然语法对,但实际逻辑来说无用的方法调用起到提示作用

animal.eat();

这样就可以了:

Animal cat=new Cat();

cat.eat();

Animal dog=new Animal();

dog.eat();

所以abstract应用场景:父类只写子类应包含哪些方法,但具体实现由多个子类自己去写,避免无意义父类的实例化,也避免子类设计的随意性。

在实际编程中,可能会有很多子类应该调用自己重写的方法,如果忘写某个方法,已经定义了abstract的父类,会编译出错提示子类要实现某个抽象方法。

父类中要有子类自己实现的抽象方法,无方法体,是一条声明语句。   public abstract void eat();

同时,子类必须去实现这个抽象方法,否则编译错误,或者视为继承了父类的抽象方法,将子类也写成抽象类。

类中有抽象方法,此类必为抽象类,但抽象类里可以有非抽象方法。

static、final、private都是无法被子类重写的修饰符,所以不能与abstract共存。

用接口实现没有共同父类,却有着共同行为的类。实现接口的类中要实现接口中的抽象方法。

IPhoto ip=new FourthPhone();

ip.phone();  //接口引用指向实现类时,该对象只能调用接口中有的方法,无法访问实现类中自己的方法。

接口定义了某一批类所需遵守的规范,不关心这些类的内部数据,也不关心这些类里方法的实现细节。它只规定这些类里必须提供某些方法。接口访问修饰符:public/默认

public interface INet{

  void network();    //接口中抽象方法可以不写abstract关键字,即默认abstract、默认public

}

实现方法的访问修饰符不能低于接口的访问修饰符,所以实现方法会自动加上public。

当类实现接口时,需要去实现接口中的所有抽象方法,否则需要将该类设置为抽象类,谁再继承该类,谁去实现。

public static final int TEMP=20;   //接口中可以包含常量,默认是public static final 所以可以直接写int TEMP=20;  必须得初始化赋值

在实现类里调用接口常量,用接口名.常量名     该常量值不能被重新赋值

也可以用接口的引用去指向具体的实现类

INet net=new SmartWatch();    //接口的引用的实现类对象,只能调用接口中定义的方法和Object中的派生方法

net.TEMP      如果实现类中也有同名常量,该方法调用的也是接口中的常量,但通常都用接口名.常量名去调用接口中的常量

若要调用实现类自己的常量,用自己引用类型创建对象,去调用即可。

接口也可以继承,并可继承多个接口,实现了多重继承。接口的实现类,需实现父接口和子接口中所有方法。

Java基础笔记(十九)——抽象类abstract的更多相关文章

  1. 夯实Java基础(十)——抽象类和接口

    转载自:http://cmsblogs.com/ 该博主的网站上干货非常!非常!非常多(说三遍),强烈推荐大家前去学习. 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法 抽象类与接口是 ...

  2. java基础第十九篇之Xml

    1:xml的概述 1.1 xml是什么 标记语言:语言中出现了<a></a>的标签 a:HTML 超文本标记语言 (语法非常严格,不能随意的定义标签) b:XML 可扩展的标记 ...

  3. 夯实Java基础(十九)——集合

    1.前言 集合在Java中的地位想必大家都知道,不用多BB了.无论是在我们现在的学习中还是在今后的工作中,集合这样一个大家族都无处不在,无处不用.在前面讲到的数组也是一个小的容器,但是数组不是面向对象 ...

  4. java基础(十九)IO流(二)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  5. Java学习笔记十九:Java中的访问控制修饰符

    Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

  6. Java基础笔记(九)—— 流程控制

    Java三大流程控制语句:顺序.选择.循环. if结构.if-else结构.多重if.嵌套if. public class Test { public static void main(String[ ...

  7. Java基础(十九)集合(1)集合中主要接口和实现类

    1.Java集合框架为不同类型的集合定义了大量接口 其中,集合有两个基本接口:Collection和Map. 2.各接口的主要特征如下 (1)Collection接口:是List接口.Set接口和Qu ...

  8. “全栈2019”Java第五十九章:抽象类与抽象方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...

  10. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

随机推荐

  1. 2015.3.7 Dll CString不能作为传入参数而要用char*

    extern "C" __declspec(dllexport) void CalcArc_2(Point2D& pm, double am, double an, CSt ...

  2. Eclipse: “The import java.io cannot be resolved”

    检查一下选项: 重点看jdk的绑定 43down voteaccepted Check your Eclipse preferences: Java -> Installed JREs. The ...

  3. elastic(8)版本控制

    转自: http://www.cnblogs.com/AK47Sonic/p/7563393.html elasticsearch 版本控制: 内部版本控制 外部版本控制 内部版本控制: 内部版本会检 ...

  4. Django 学习之---静态文件处理详解

    前言: 1.静态文件是指 网站中的 js, css, 图片,视频等文件 2.静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中. 当 DEB ...

  5. LAMP 2.5 Apache禁止解析php

    某个目录下禁止解析 php,这个很有用,我们做网站安全的时候,这个用的很多,比如某些目录可以上传文件, 为了避免上传的文件有木马, 所以我们禁止这个目录下面的访问解析 php. 安装目录下有个data ...

  6. ListView里面嵌套CheckBox

    布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:andro ...

  7. 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-005插入排序的改进版

    package algorithms.elementary21; import algorithms.util.StdIn; import algorithms.util.StdOut; /***** ...

  8. bzoj5450 轰炸

    传送门 分析 不难想到如果这个图是一个DAG则答案就是图的最长路 于是我们考虑有环的情况 我们发现一个环上的所有点颜色一定不相同 于是我们发现答案就是缩点之后跑一遍点权最长路 点权就是这个强联通分量中 ...

  9. VSTO的简单用法

    一直听说vsto这个名词,还真不知道什么意思,今天了解了一下,原来他的全程是Visual Studio Tools For Office,说他是VBA的替身(VBA俺也不是很懂),刚才上网查询做了个例 ...

  10. swing重绘按钮为任意形状图案的方法

    swing重绘按钮为任意形状图案的方法 摘自https://www.jb51.net/article/131290.htm 转载  更新时间:2017年12月22日 13:43:00   作者:_Th ...