抽象类(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学习笔记之抽象类与接口的更多相关文章

  1. 0026 Java学习笔记-面向对象-抽象类、接口

    抽象方法与抽象类 抽象方法用abstract修饰,没有方法体部分,连花括号都不能有: 抽象方法和抽象类都用abstract修饰 包含抽象方法的类一定是抽象类:但不包含抽象方法的类也可以是抽象类 不能创 ...

  2. Java学习日记-7 抽象类和接口

    一.抽象类 abstract修饰:类和类中的方法 抽象方法:abstract type name(parameter-list);(abstract不能修饰static方法和构造函数) 引用:抽象类有 ...

  3. [core java学习笔记][第六章接口与内部类]

    接口域内部类 接口 描述类具有什么功能,不给出具体实现. 内部类 用于设计协作关系的类集合 代理 实现任意接口的对象. 6.1 接口 接口声明 public interface Comparable ...

  4. Java基础学习笔记(三) - 抽象类和接口

    一.抽象类 没有方法主体的方法称为抽象方法,包含抽象方法的类就是抽象类. Java中使用 abstract 关键字修饰方法和类,抽象方法只有一个方法名,没有方法体. public abstract c ...

  5. 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:抽象类与接口的应用

    abstract class A{ // 定义抽象类A public abstract void print() ; // 定义抽象方法print() }; class B extends A { / ...

  6. java学习笔记23(Set接口)

    Set接口: 1.Set接口是不包含重复元素的Collection: 2.set集合没有索引,只能通过增强型for循环或迭代器来遍历: 3.Set接口只包含从collection接口继承的方法,并且增 ...

  7. Java学习笔记22(List接口)

    List接口继承自Collection接口,自身具有三大特点: 1.有序集合:存入和取出的顺序一致: 2.此接口的用户可以对每个元素插入位置进行精确控制:可以通过索引操作元素 3.可以存储重复元素 L ...

  8. 【Java学习笔记】HashMap子接口---LinkedHashMap

    特点: 存入元素的顺序   与   取出元素的顺序相同(与LinkedHashSet类似) import java.util.HashMap; import java.util.Iterator; i ...

  9. java学习笔记—ServletConfig、ServletContext接口(13)

    ServletConfig是一个由Tomcat服务器在初始化Servlet的时候创建并传递进来的一个对象. 该对象主要描述的时候一个servlet的配置信息. 如: <servlet>  ...

随机推荐

  1. 一篇RPO漏洞挖掘文章翻译加深理解。

    这是我第一次尝试翻译一篇漏洞挖掘文章,翻译它也是为了加深理解它.这是一篇很有意思的漏洞挖掘文章. 前几天在看fd的博客,偶然看到了这篇文章,虽然有点老了.但是思路真的牛皮.我决定花费时间和精力研究它们 ...

  2. JAVA内存模型与JVM内存结构

    问题:什么事java内存模型? 首先呢不要答堆.栈.方法区.这是JVM的内存结构.下面阐述了JMM和JVM的区别和自己对JMM的见解 1.Java内存模型(JMM):即多线程相关的.定义了一个线程对另 ...

  3. dart 大文件读取

    dart 中不可避免会出现文件读取的情况, 甚至是很大的文件, 比如 200M 的文件 如果一次性读入内存,虽然也行得通, 但是如果在 flutter 中开启个 200M 大小的字节数组, 一不小心可 ...

  4. java 简单框架的运用

    Struts Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的. Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关:  1.模 ...

  5. 过渡 - transition

    过渡 - transition 是变形transfrom其中一种效果,定义为一种状态过渡到另一种状态的过程,今天学习到css3动画,特此记录下过渡的使用和一些效果. 实例1: <div clas ...

  6. 采用WPF技术,开发OFD电子文档阅读器

    前言 OFD是国家标准版式文档格式,于2016年生效.OFD文档国家标准参见<电子文件存储与交换格式版式文档>.既然是国家标准,OFD随后肯定会首先在政务系统使用,并逐步推向社会各个方面. ...

  7. 04: OpenGL ES 基础教程03 纹理

    前言 1:常用类: 1:纹理的作用 正文 一:常用类 上下文 顶点数据缓存 着色器 baseEffect 一:纹理 1.1:   纹理可以控制渲染的每个像素的颜色. 1.2: 纹素:与像素一样,保存每 ...

  8. Aspose.Cell导出带chart图表

    最终实现的效果就是这样,代码比较多,我放在了CSDN上了,是无需模板的,别听网上瞎吹,说什么要模板,地址是:https://download.csdn.net/download/chanelwtt/1 ...

  9. git使用笔记-git项目的建立及配置、创建子分支及独立分支、分支重命名

    一.git的基本使用 1.下载安装git (略) 2.配置gitconfig 配置内容:(主要是你的git的账户信息,提交命令的别名) 3.配置git公钥(输入$ ssh-keygen -t rsa ...

  10. Flume初见与实践

    Photo by Janke Laskowski on Unsplash 参考书籍:<Flume构建高可用.可扩展的海量日志采集系统> --Hari Shreedharan 著 以下简称& ...