Java学习笔记之抽象类与接口
抽象类(abstract)
抽象类概述:一个类被abstract修饰表示这个类是抽象类, 自己定义方法但是不实现方法,后代去实现
抽象方法: 一个方法被abstract修饰表示这个方法是抽象方法 ,抽象方法没有方法体
特点:
1,有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。 抽象类有0-N个抽象方法
2,抽象类不能实例化,意思是不能new一个抽象类
3,凡是继承抽象类的类,必须实现抽象类的方法或者自己也是一个抽象类
4,构造方法和static方法不能是抽象的
下面为一个实例:
抽象类Person
public abstract class Person {
//私有属性性别
private String sex;
//有参构造
public Person( String sex){
this.sex=sex;
}
//抽象方法
public abstract void doSomething(); }
子类Student
public class Student extends Person{ private String name;//名字
private int age;//年龄
//有参构造
public Student(int age){
super("男");
this.age=age;
}
public Student(int age,String name){
this(age);
this.name=name;
}
public void doSomething(){
System.out.println("我是学生类实现抽象方法doSomething");
} }
子类Teacher
public class Teacher extends Person {
public Teacher(String sex) {
super(sex);
} public void doSomething(){
System.out.println("我是老师类实现抽象方法doSomething");
} }
测试类Text
public class Text { public static void main(String[] args) {
Person p=new Student(12);
p.doSomething();
Person p1=new Teacher("男");
p1.doSomething();
}
}
控制台输出结果为:
我是学生类实现抽象方法doSomething
我是老师类实现抽象方法doSomething
接口(interface)
作用:专门用抽象方法来定义规范
接口可以定义属性跟方法:
属性:public static final ,并且必须立马初始化,不写的话会默认加上 public static final,如果要写不能跟他们冲突
public static final String MY_AGE="";
int AGE=;//注意常量的命名规范
方法:
1,必须全部是抽象方法,不能有非抽象方法,默认加上 public abstract(注意第5条例外)
2,如果类要实现一个接口,必须实现这个接口里面的所有的抽象方法。 除非这个类是一个抽象类。
3,接口不能直接实例化,也就是说不能跟new关键字一起使用。必须有实现这个接口的类来实例化。
4,java里面类是不能多继承,接口可以多继承
public interface MyInterface extends InterfaceA,InterfaceB {
}
如果一个类实现了MyInterface接口,那么它也要实现MyInterface继承的接口里的所有方法
public class Person implements MyInterface{
//实现MyInterface接口的方法
@Override
public void play(){
System.out.println("三打一都被反杀,会不会玩?...");
} //实现InterfaceA接口的方法
@Override
public void menthodA() {
MyInterface.eat();
} //实现InterfaceB接口的方法
@Override
public void menthodB() { }
}
5,还可以定义静态的非抽象方法。(JDK 1.8+) ,JDK 1.8之前是没有的。
下面是一个体现接口的实例
问题:本题模拟电脑插入U盘,创建一个接口类(即规范电脑和U盘的接口),使得任何一个牌子的U盘都能插入任何一个牌子的电脑,体会其中思想
这是UsbInterface类
public interface UsbInterface { public final static int WIDTH = 3 ;//宽
final static public int LENGTH = 10 ;//长
//读取数据
void readData();
//写入数据
void writeData(); }
这是KingStone类(金士顿牌U盘)
public class KingStone implements UsbInterface {
//实现U盘的功能
@Override
public void readData() {
System.out.println("--KingStone 优盘数据被读取------"); } @Override
public void writeData() {
System.out.println("--KingStone 优盘写入数据------");
} }
这是SanDisk类(三星牌U盘)
public class SanDisk implements UsbInterface { @Override
public void readData() {
System.out.println("--sandisk 优盘数据被读取------"); } @Override
public void writeData() {
System.out.println("--sandisk 优盘写入数据------");
} }
这是DellComputer类(戴尔电脑)
public class DellComputer { //判断长,宽是否符合要求
public boolean push(UsbInterface s){
return (s.WIDTH == 3 && s.LENGTH == 10) ;
} //插入后准备读取数据
public void read(UsbInterface s){
System.out.println("dell 电脑要读取数据了。。。。。。");
s.readData();
} }
这是测试类
public class Demo03 { public static void main(String[] args) { DellComputer dell = new DellComputer();
SanDisk u = new SanDisk();
KingStone k = new KingStone(); if(dell.push(u)){
dell.read(u);
} if(dell.push(k)){
dell.read(k);
} } }
Java学习笔记之抽象类与接口的更多相关文章
- 0026 Java学习笔记-面向对象-抽象类、接口
抽象方法与抽象类 抽象方法用abstract修饰,没有方法体部分,连花括号都不能有: 抽象方法和抽象类都用abstract修饰 包含抽象方法的类一定是抽象类:但不包含抽象方法的类也可以是抽象类 不能创 ...
- Java学习日记-7 抽象类和接口
一.抽象类 abstract修饰:类和类中的方法 抽象方法:abstract type name(parameter-list);(abstract不能修饰static方法和构造函数) 引用:抽象类有 ...
- [core java学习笔记][第六章接口与内部类]
接口域内部类 接口 描述类具有什么功能,不给出具体实现. 内部类 用于设计协作关系的类集合 代理 实现任意接口的对象. 6.1 接口 接口声明 public interface Comparable ...
- Java基础学习笔记(三) - 抽象类和接口
一.抽象类 没有方法主体的方法称为抽象方法,包含抽象方法的类就是抽象类. Java中使用 abstract 关键字修饰方法和类,抽象方法只有一个方法名,没有方法体. public abstract c ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:抽象类与接口的应用
abstract class A{ // 定义抽象类A public abstract void print() ; // 定义抽象方法print() }; class B extends A { / ...
- java学习笔记23(Set接口)
Set接口: 1.Set接口是不包含重复元素的Collection: 2.set集合没有索引,只能通过增强型for循环或迭代器来遍历: 3.Set接口只包含从collection接口继承的方法,并且增 ...
- Java学习笔记22(List接口)
List接口继承自Collection接口,自身具有三大特点: 1.有序集合:存入和取出的顺序一致: 2.此接口的用户可以对每个元素插入位置进行精确控制:可以通过索引操作元素 3.可以存储重复元素 L ...
- 【Java学习笔记】HashMap子接口---LinkedHashMap
特点: 存入元素的顺序 与 取出元素的顺序相同(与LinkedHashSet类似) import java.util.HashMap; import java.util.Iterator; i ...
- java学习笔记—ServletConfig、ServletContext接口(13)
ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet> ...
随机推荐
- Net基础篇_学习笔记_第十天_方法(函数)
方法(函数): 函数就是将一堆代码进行重用的一种机制.//解决冗余代码问题------方法出现了. 面向对象的三大特征:封装.继承.多态 函数的语法:[public] stati ...
- NTP服务器实现
时间服务器是一种计算机网络仪器,它从参考时钟获取实际时间,再利用计算机网络把时间信息传递给用户.虽然还有一些比较少用或过时的协议仍然在使用,但现时最重要及广泛使用,作为时间信息发送和同步化的协议是网络 ...
- Mysql高手系列 - 第11篇:深入了解连接查询及原理
这是Mysql系列第11篇. 环境:mysql5.7.25,cmd命令中进行演示. 当我们查询的数据来源于多张表的时候,我们需要用到连接查询,连接查询使用率非常高,希望大家都务必掌握. 本文内容 笛卡 ...
- MAC sublime常用快捷键(慢慢补)
1、 FN + 左方向键:向左选择一行 2、FN + 右方向键:向右选择一行 3、FN + 上方向键:跳到页头 4、FN + 下方向键:跳到页尾 5、FN + SHIFT + 左方向键|上方向键:从当 ...
- 混合事务分析处理“HTAP”的技术要点分析
HTAP是近些年来比较火的一个概念,本文将聊聊HTAP的前世今生及技术特点. 一.数据应用类别 根据数据的使用特征,可简单做如下划分.在选择技术平台之前,我们需要做好这样的定位. 1.1 OLTP 联 ...
- 快速开始使用spark
1.版本说明 在spark2.0版本以前,spakr编程接口是RDD(Resilient Distributed Dataset,弹性分布式数据集),spark2.0版本即以上,RDD被Dataset ...
- [Spark] 04 - HBase
BHase基本知识 基本概念 自我介绍 HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”. ...
- [Leetcode] 第318题 最大单词长度乘积
一.题目描述 给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母.你可以认为每个单词只包含小写字母.如果不 ...
- Jmeter BeanShell 执行多次问题,每发送一次请求执行一次BeanShell问题
前言:(此问题耗时半天) 提供解决思路的博主又有新问题了. 如图所示,写了一个BeanShell从文件中去获取值之后给测试计划的变量赋值. 问题来了,当禁用b的情况下,a只执行一次.当启用b请求的情况 ...
- Spring 梳理-MVC-前端控制器DispatchServlet及URL请求处理过程
大多数基于java的web框架,都有前端控制器 spring mvc请求过程 1. 请求会首先发送到DispatchServlet,这是spring的前置Servlet,它会接收请求并转发给sprin ...