Java基础(basis)-----抽象类和接口详解
1.抽象类
1.1 abstract修饰类:抽象类
- 不可被实例化
- 抽象类有构造器 (凡是类都有构造器)
- 抽象方法所在的类,一定是抽象类
- 抽象类中可以没有抽象方法
1.2 abstract修饰方法:抽象方法
- 格式:没有方法体,包括{}.如:public abstract void eat();
- 抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
- 若子类继承抽象类,并重写了所有的抽象方法,则此类是一个"实体类",即可以实例化
- 若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!
package com.practise;
/**
* 抽象类
*
* @author yyx 2019年3月4日
*/
public class AbstractPractise {
public static void main(String[] args) {
Student stu = new Student();
/*
* 报错 Person person=new Person();
*/
new Person() { // 匿名类
@Override
void sayWord() {
System.out.println("我是一个匿名类");
}
}.sayWord();
stu.sayWord();
}
}
abstract class Person {
abstract void sayWord();
public void readBook() {
System.out.println("人会读书");
}
public Person() {
System.out.println("抽象类有构造器,不能new实例化,但子类创建对象时我会先创建实例");
}
}
class Student extends Person {
@Override
void sayWord() {
System.out.println("我是人的子类,我会讲话");
}
}
注意:abstract 不能用来修饰属性、构造器、private、final、static
2.接口
接口(interface) 是与类并行的一个概念
- 接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合,不能包含变量、一般的方法
- 接口是没有构造器的
- 接口定义的就是一种功能。此功能可以被类所实现(implements)
- 实现接口的类,必须要重写其中的所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类
- 类可以实现多个接口。----java 中的类的继承是单继承的
- 接口与接口之间也是继承的关系,而且可以实现多继承
package com.practise;
/**
* 接口
*
* @author yyx 2019年3月4日
*/
public class InterfacePractise {
public static void main(String[] args) {
CC cPerson = new Person();
DD dPerson = new Person();
print(cPerson);
printSpeak(dPerson);
System.out.println(CC.age);
}
public static void print(CC c) {
c.walk();
c.eat();
c.study();
}
public static void printSpeak(DD d) {
d.speak();
}
}
interface AA {
void walk();
}
interface BB {
void eat();
}
interface DD {
void speak();
}
/**
* 接口支持多继承
* @author yyx
* 2019年3月4日
*/
interface CC extends AA, BB {
//常量,接口中不推荐使用
static final int age = 22;
void study();
}
class Person implements CC, DD {
@Override
public void walk() {
System.out.println("人会走路");
}
@Override
public void eat() {
System.out.println("人会吃饭");
}
@Override
public void study() {
System.out.println("人会学习");
}
@Override
public void speak() {
System.out.println("人会说话");
}
public void swim() {
System.out.println("人会游泳");
}
}
Java基础(basis)-----抽象类和接口详解的更多相关文章
- Java基础之抽象类与接口
Java基础之抽象类与接口 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...
- 《Java基础——break与continue用法详解》
Java基础--break与continue用法详解 1. break语句: 规则: 1. 仅用于循环语句和switch语句当中,用于跳出循环. 2. 当只有一层循环时,则直接跳出循环,不 ...
- java抽象类和接口详解
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...
- java基础(四)-----抽象类与接口
抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们 ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
- 程序猿的日常——Java基础之抽象类与接口、枚举、泛型
再次回顾这些基础内容,发现自己理解的又多了一点.对于一些之前很模糊的概念,渐渐的清晰起来. 抽象类与接口 抽象类通常是描述一些对象的通用方法和属性,并且默认实现一些功能,它不能被实例化.接口仅仅是描述 ...
- java基础之抽象类与接口的区别
在学习java的过程中,或者是在找工作笔试或面试的时候,如果你是java岗位,那么抽象类与接口的区别无疑是一个大热点,是各大公司都想要考的一个小知识点,下面是我为了9月份秋招自己总结的,若有不对的地方 ...
- java基础之抽象类与接口的形式参数和返回值
抽象类与接口形式参数和返回值问题 1.形参问题 /* 1.形式参数: 基本类型(太简单,不是我今天要讲解的) 引用类型 (1)类名:(匿名对象的时候其实我们已经讲过了) 需要的是该类的对象 (2)抽象 ...
- [java基础] 002 - 位运算符的详解和妙用
一:位运算符详解 位运算符主要用来对操作数二进制的位进行运算.按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值. Java 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...
随机推荐
- python摸爬滚打之day05----字典
1.字典介绍 1.1 结构: {key1: value1, key2: value2, ....} ,由很多键值对构成. 在字典的key-value(键值对)中, key(键)必须是可哈希(不可变 ...
- js中属性类型:数据属性与访问器属性
js中属性类型分为两种:数据属性和访问器属性 在js中,对象都是由名值对构成的,名:就是我们所说的属性名,值就是属性对应的值(基本值.对象.方法). ECMA-262第5版定义了只有内部才用的特性,描 ...
- tomcat停止和启动脚本
日常重启tomcat比较麻烦,所以写了2个脚本,在脚本后输入tomcat名称即可 启动或重启tomcat #!/bin/sh TOMCAT_HOME=/usr/java/$1 if [ ! -n &q ...
- Matlab中导入文本文件中的数据 矩阵合并 以及C++中删除文件操作
今天用到了Matlab读取文本文件中按照一定格式存储好的数据,然后进行后续的分析计算等,因此涉及到Matlab的文件读取,记录在这里,供以后查阅: fid = fopen('train.set', ' ...
- linux 查看文件目录大小
du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-de ...
- 【SQL】SQL Between用法
- cat 查看文件命令
查看文件内容 [root@salt-server- .txt ada sada sadas -n 查看文件内容并显示行数 [root@salt-server- .txt ada sada sadas
- [MySQL优化2]不用SELECT * FROM table;
假设有一张employees表,它有8列:员工人数,姓氏,名字,分机,电子邮件,办公室代码,报告,职位等.如果要仅查看员工的名字,姓氏和职位,请使用以下查询:SELECT lastname, firs ...
- 006-Object.assign
一.Object.assign简要使用 是ES6新添加的接口,主要的用途是用来合并多个JavaScript的对象. Object.assign()接口可以接收多个参数,第一个参数是目标对象,后面的都是 ...
- chkdsk 命令对Raid盘检测和查错、修复
C:\Documents and Settings\Administrator>chkdsk /?检查磁盘并显示状态报告. CHKDSK [volume[[path]filename]]] [/ ...