Java基础进阶_2

抽象类:

使用abstract关键字修饰的类为抽象类,其内部可以有类的一切成员,还可以有abstract修饰的抽象方法(不一定有),抽象方法只有方法的声明,没有方法体,有抽象方法的类必须声明为抽象类。

抽象类不能够创建对象(为什么?反证法:假设创建了抽象类的对象,使用其对象调用抽象方法,而方法没有方法体,没有意义),但其必须是有构造器的,是提供给其子类创建对象时,初始化父类成员使用的。

抽象类的子类必须实现父类的抽象方法,如果不实现,也必须将子类定义为抽象方法。

抽象类存在的意义:为了被子类继承,体现的是模板思想。(抽象类中实现的是模板中确定的成员,不确定如何实现的交给子类实现)。

抽象类的构造器不能为私有,否则子类无法访问,无意义。

接口:

jdk1.8之前接口中只能有抽象方法(public abstract忽略不写)和共享常量(public static final忽略不写)。

jdk1.8开始之后接口中还可以有默认方法(用default修饰,只能用接口的实现类的对象来调用)、静态方法(用static修饰,只能用本接口名直接调用)、私有方法(jdk1.9开始才有的,用private修饰,只能用接口中其它私有方法和默认方法调用)。

两者区别:

相同点:
1、都不能被实例化。
2、接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。
不同点:
1、单继承,多实现。接口可以实现多个,只能继承一个抽象类。
2、接口强调的是功能,抽象类强调的是所属关系。
3、接口中的所有成员变量为public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是public abstract公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。

原文地址:https://www.cnblogs.com/superyucong/p/12629037.html

时间: 2024-08-04 04:24:01

Java基础进阶_2的相关文章

java基础进阶篇(六)_HashTable------【java源码栈】

一.概述 ??前面介绍了HashMap的结构和原理,这里介绍个类似HashMap的结构Hashtable. ??HashTable 官方解释是HashMap的轻量级实现, 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射. ??所以我们结合HashMap来介绍HashTable, 比较下两者的区别. ??HashTable 使用的很少, 它支持线程安全, 通过内部方法加上 synchronized 实现, 因此同步锁的密度太大了, 在实际情

java基础进阶篇(七)_LinkedHashMap------【java源码栈】

目录 一.概述 二.特点 三.应用场合 四.构造方法 1.参数为空 2.accessOrder 五.源码结构分析 六.常见问题 1.如何实现的元素有序? 2.如何保证顺序的正确以及同步 3.如何实现两种顺序(插入顺序或者访问顺序)? 4.为什么重写containsValue()而不重写containsKey()? 七.常用方法 一.概述 ??LinkedHashMap是HashMap的子类,关于HashMap可以看下前面的章节:java基础进阶篇 HashMap public class Lin

Java基础进阶整理

Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基础没有涉及到)的进行较全面的理解已经整理,只要充分掌握了基础知识,学习高级部分的知识才会事半功倍犹如轻车熟路一般容易上手. 正文: CLASSPATH的设置:我们知道运行java必须要设置CLASSPATH环境变量,但是sun  java 1.4之后改进了设计,JRE会自动搜索当前路径下的类文件,而

java基础进阶:SQL的运用

SQL的基础的运用 /* --1.学生表 Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(C,Cname,T) --C --课程编号,Cname 课程名称,T 教师编号 --3.教师表 Teacher(T,Tname) --T 教师编号,Tname 教师姓名 --4.成绩表 SC(S,C,score) --S 学生编号,C 课程编号,score 分数 */ --创建测试数据 --1

Java基础---进阶练习(二十八)

程序代码: package fangwei;import java.util.Scanner;//通过scanner工具来获取用户的输入成绩 //scanner类位于Java.util包中,要导入此包public class First { public static void main(String[]args){  Scanner input=new Scanner(System.in);//创建scanner对象  System.out.println("请输入考试成绩"); 

java基础进阶篇(五)_HashSet------【java源码栈】

目录 一.概述 二.源码分析 1.HashSet 源码 2.两个重要成员变量 三.构造方法 1.public HashSet(); 2.public HashSet(Collection<? extends E> c); 3.public HashSet(int initialCapacity, float loadFactor); 4.public HashSet(int initialCapacity); 5.特殊的构造方法 四.常用方法 1.int size() 2.boolean is

Java基础进阶_5

Collection集合的体系: Collection<E>(接口) / \ Set<E>(接口) List<E>(接口) / \ /              \ \ HashSet<E>(实现类)  TreeSet<E>(实现类)   LinkedList<E>(实现类) Vector(线程安全) ArrayList<E>(实现类) / LinkedHashSet<E>(实现类) Collection集合体

Java基础进阶_6

案例:输入一个字符串,统计每个字符出现的次数. public class CountDemo { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入字符串:"); String str = s.nextLine(); Map<Character,Integer> res = new HashMap<>(); for (

【思库教育】2017PHP项目实战基础+进阶+项目之基础篇

下载链接: [思库教育]2017PHP项目实战基础+进阶+项目之基础篇 小白变大牛,您的专属资源库! 小白变大牛,您的专属资源库! 内容非常充实,可以看目录,设计的面多,项目多,技能多,如果掌握好,找一份PHP的工作,易如反掌!学完后可以到PHP小白变大牛精华区查找更加符合你的资源或者项目! [思库教育]2017PHP项目实战基础+进阶+项目之基础篇[思库教育]2017PHP项目实战基础+进阶+项目之进阶篇[思库教育]2017PHP项目实战基础+进阶+项目之项目篇小白变大牛!Python小白,J