1.什么是接口:

* 接口是方法的集合,而且接口中的方法全是抽象的

* 你可以把接口看成一个特殊的"抽象类",接口中的方法全是抽象的

*

*

* 2.java中怎么定义接口:

* 定义类的关键字:class

* 定义接口的关键字:interface

* 格式:

* public interface 接口名{

* //成员方法

* public abstract void demo01();

* public abstract void demo02();

* }

* 接口的方法 必须是public abstract 修饰,你可以不写,也可以选择性写,但是不写不代表没有(我们建议写)

*

* 3. 接口可以创建对象吗?不可以创建对象,接口也是天生作为父类

*

* 4.类和接口的关系,叫做实现,类实现接口(继承是类和类之间的关系,实现是类和接口的关系)

*

* 5.怎么实现: implements(实现的关键字)  extends(继承的关键字)

*  a.一个类实现接口,这个类我们称为接口的实现类

*   b.一个类继承抽象类,这个类我们称为抽象类的子类

* 6.接口中成员的特点:

*  a.所有的方法必须都是 public abstract修饰

*

*   b.接口中成员变量必须由public static final 修饰

* 我们建议以上所有的修饰符都写上

接口中成员的特点:

* 1.所有的方法必须都是 public abstract修饰

*

* 2.接口中成员变量必须由public static final 修饰

* 我们建议以上所有的修饰符都写上

* 接口的一些特点:

*

* 1.类和类只能单继承,类和接口可以多实现

*

* 2.接口和接口的关系叫做继承,而且接口和接口可以多继承

*

* 面试题:java中支持多继承吗?

* java类和类只能单继承,但是可以多层继承

* java接口和接口可以多继承

*

* 3.一个类 继承了另外一个类,同时实现了多个接口

* 伪代码:

* public class 子类 extends 父类 implements 接口1,接口2...{

* //子类想要创建对象

* //1.重写父类的抽象方法(可能有可能没有)

* //2.重写所有接口中所有抽象方法

* }

抽象类和接口的区别:

*

* 1.抽象类中只能定义 所有子类共性内容

*

* 2.接口中定义是整个继承体系之外的方法

多态:[多种变态] 一个事物的多种形态

* 比如一个学生,你可以看成是学生,你可以看成是人

*

* 1.必须有继承关系(或者实现关系)

* 2.必须有方法的重写(但是不重写 多态失去了意义)

* 3.在12前提下,多态的表现形式  父类的引用变量 指向了 子类的对象

*   接口的引用变量 指向了 实现类的对象

* AbstractB  aa = new ClassB();

* InterA ia =  new ClassA();

*

* 假设  abstract  class Person{

* public abstract void sleep();

* }

* 1.继承

* class Student extends Person{

* //2.重写方法

* public void sleep(){

* ..

* }

* }

* 3.表现形式:

*  父类的引用变量 指向了 子类的对象

* Student s = new Student();//不是多态

*  Person p = new Student();//就是多态

多态中的成员变量:(只和父类有关系)

* 1.编译时:看父类

* 2.运行时:看父类

*

* 多态中的成员方法:

* 1.编译时:看父类

* 2.运行时:看子类

*

* 总结:多态的成员变量只和父类有关,多态的成员方法编译看父类运行时看子类

*

* 多态的好处和弊端:

*

* 1.弊端:只能调用子父类共有的方法,而不能调用子类特有的方法

*

* 2.好处:提高了程序的扩展性

* 案例:说明多态好处,提高了程序的扩展性

* 喂猫和狗的案例

* 1.抽取父类 (Animal)

* 2.猫狗继承Animal,同时重写抽象方法

* 多态的形式:

* 1.前提:

酒 a = 剑南春

酒 b = 五粮液

酒 c = 酒鬼酒

这里所表现的的就是多态。剑南春、五粮液、酒鬼酒都是酒的子类,

我们只是通过酒这一个父类就能够引用不同的子类,这就是多态——

我们只有在运行的时候才会知道引用变量所指向的具体实例对象。

* a.必须有继承关系(或者实现关系)

* b.必须有方法的重写

* 2.表现形式

* 父类类型 变量名 = new 子类类型();

* 接口类型 变量名 = new 实现类类型();

*

* 多态的弊端和好处:

* a.只能调用子父类共有内容,不能调用子类特有的内容

* 多态的成员变量:编译时看父类 运行时也看父类

* 多态的成员方法:编译还是看父类,运行时看子类

* b.好处:提供程序扩展性,同时提高了代码复用性

*

* 多态弊端的解决方案:(转型方案)

* 1.向上转型:(自动类型转换)

* double d = 1;//打印出来的d不是1而是1.0

* Person p = new Student();//向上转型

* Animal an = new Dog();//向上转型

*

* 2.向下转型(强制类型转换)

* int i = (int)1.9;//打印i打印出来是1

* Person p = new Student();//多态

* Student s = (Student)p;//向下转型

昨天知识回顾:

* 1.this和super的作用

*

* 2.方法重写的概念

*

* 3.方法重写的意义:增强了父类的功能

*

* 4.什么是抽象方法:

*    什么是抽象类:

*

* 5.抽象类存在的意义?

*

* 6.抽象类的抽象方法存在的意义?

*

* 补充:this(参数):

*  super(参数):单一原则

*

*

*/

public class TestDemo {

public static void main(String[] args) {

C c = new C();//1.开辟空间 2.构造方法 3.返回地址

//构造方法:1:super() 2:初始化成员(赋值默认值) 3:进行后面的方法体

}

}

class A{

int x = 10;-

public A(){

super();

//初始化成员

showX();

}

public void showX(){

System.out.println(x);

}

}

class B extends A{

public B(){

super();

showX();

}

}

class C extends B{

public C(){

super();

//初始化

showX();

}

}

1.以前我们定义一个类的成员变量和成员方法的时候,以后我们是通过创建对象来调用这些成员的

*

* 2.定义一个类 CZStudent(学号,name,sex,school:就读学校)

* static修饰成员变量:比如 : static String school

* 被static修饰的成员变量 不属于某一个对象,它属于这个类,但是有学生又共享这个变量

*

* 案例: 中国人类

* name.age,job,国籍

*

* 总结:被static修饰的成员变量,在内存中有一份,保存到静态区

* 然后无论创建多少个对象,所有对象共享一份数据

* 所以说我们一般称static修饰的成员变量 叫做类成员

*

* 3.被static修饰的成员的访问方式:

* 成员变量:

* 对象名.static修饰的成员变量名;//不建议

* 类名.static修饰的成员变量名;//建议

* 成员方法:

* 对象名.static修饰的方法名();//不建议

* 类名.static修饰的方法名();

* 4.补充:被static修饰的成员 和 不被static修饰的成员相互访问的问题

* 生命周期的问题:

* static修饰成员出现的早----->秦始皇(先人)

* 非static修饰的成员出现的晚---->我们(后人)

java基础第七篇之接口的更多相关文章

  1. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

  2. Java基础2-容器篇

    java基础2-容器篇 1.页首请关注 思维导航大纲 1.常用容器的类型层次结构 2.理解容器的常用思维大纲 a.空间 时间 concurrentModifyException 加载因子 3.常用类源 ...

  3. Java基础学习(四)-- 接口、集合框架、Collection、泛型详解

    接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写.   二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...

  4. Java基础之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  5. Java基础(十一):接口

    一.接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是 ...

  6. java基础知识总结--继承和接口

    什么是继承?什么是接口?他们之间的区别和联系是什么? 什么是继承? 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能.多个类中存在相同属性和行 ...

  7. JAVA基础整理-集合篇(一)

    集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...

  8. java基础知识----IO篇

    写在前面:本文章基本覆盖了java IO的所有内容.java新IO没有涉及.文章依然以样例为主,由于解说内容的java书非常多了,我觉的学以致用才是真.代码是写出来的,不是看出来的. 最后欢迎大家提出 ...

  9. [ 转载 ] Java基础11--Java总结篇系列:Java泛型

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...

随机推荐

  1. 《程序员代码面试指南》第八章 数组和矩阵问题 数组的partition 调整

    题目 数组的partition 调整 java代码 package com.lizhouwei.chapter8; /** * @Description: 数组的partition 调整 * @Aut ...

  2. springboot 默认tomcat配置

    1. Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改.当在配置文件中敲出max后提示值就是它的默认值. 我们可以看到默认设置中,Tomcat的最大 ...

  3. 实现远程连接MySQL

    首先登录远程服务器,然后登录mysql:mysql -u用户 -p密码; 创建允许远程登录的用户并赋权:grant all privileges on 数据库.表名 to 用户名@'IP地址' ide ...

  4. [原创]Java动态生成word文档(图文并茂)

    很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...

  5. Eclipse_插件_02_jd-eclipse插件的安装

    1.去官网下载 jd-eclipse插件 2.解压后的文件夹A放到eclipse的drops文件夹下 3.删掉多余文件,确保文件夹A下只有plugin 和 freature 两个文件夹 4.清空osg ...

  6. 解决 maps to localhost, but this does not map back to the address

    修改  /etc/ssh/ssh_config vim  /etc/ssh/ssh_config GSSAPIAuthentication no

  7. 每天一个linux命令(3):cd命令

    版权声明 更新:2017-04-27博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下命令cd. 2 开 ...

  8. Seal Report结合MySQL数据库 报表展现_20161011

    昨天留了草稿 未来得及发 今日补发一篇 seal report 操作类似excel数据透视表也包含行标签和列标签及值标签,行列代表的是数据指标的维度,值标签代表的是度量. seal report连接M ...

  9. Seal Report_20160923

    Seal Report算是报表工具中比较好用的一个,它提供了一个完整的从其他任何数据库产生报表的架构.该产品主要关注于容易安装和报表设计,一旦安装好,报表很快就可以建立并且发布.该组件完全开源,使用C ...

  10. ACM学习历程—HDU1716 排列2(dfs && set容器)

    Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数.   Input 每组数据占一行,代表四张卡片上的数字( ...