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 语言中的位运算符分为位逻辑运算符和位移运算符两类, ...
随机推荐
- java 线程 (三)线程并发的安全性 同步代码块
package cn.sasa.demo1; import java.util.concurrent.ExecutionException; public class ThreadDemo { pub ...
- monitor
// ==UserScript== // @name Page Monitor // @namespace http://tampermonkey.net/ // @version 0.1 // @d ...
- 2018天猫双11各类目品牌成交额top10排行榜
2018天猫双11总成交额213,550,497,011元,你知道各类目品牌成交额排行吗?一起来看看吧,赶紧收藏,以后就知道要怎么买了! 相关阅读: 2018天猫双11各类目品牌成交额top10排行榜 ...
- 帝国cms系统限制的登录次数不得超过5次请等60分钟过后方可重新登录
朋友的网站是帝国cms建的,他好久没登录有点忘记密码了,后面再登录就提示系统限制的登录次数不得超过5次请等60分钟过后方可重新登录,这个如何解决呢?其实只要修改一下配置文件就可以了:修改e/class ...
- UITextView设置placeholder
下面是我的代码,可以直接拿来用 #import <UIKit/UIKit.h> @interface CustomTextView : UITextView @property(nonat ...
- linux下修改/etc/profile文件
inux下修改/etc/profile文件 2017年01月06日 14:30:12 白昙 阅读数:8540 标签: linux 更多 个人分类: linux 通常情况下,/etc/profile ...
- uploadify3.2.1的参数设置
$('#file_upload').uploadify({ auto:false, //接受true 或 false两个值,当为true时选择文件后会自动上传:为false时只会把选择的文件增加进队列 ...
- C# HtmlElement的GetAttribute("class") return ""
用GetAttribute("className")代替GetAttribute("class")
- java poi导入Excel(个人代码)
案例使用的框架:jsp+spring+mybaties <form id="importForm" name="importForm" method=&q ...
- xtrabackup全库还原+binlog日志还原
1.场景 mysql数据库误删某个库.误删表或者误删除数据 如下模拟图:备份策略定为每天凌晨进行全库备份,在B时间点进行了误操作以后,有两种恢复场景,一种是恢复到B时间点误操作前,一种是恢复到C时间点 ...