知识点

接口:

  1.接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

  2. 接口中只允许出现抽象方法,不能出现非抽象方法

  3. 接口的源文件也是java文件,编译后的文件也是.class,所以可以把接口看作一个特殊的类

注意:

  • 接口是供别的类去实现的,并且要实现他的抽象方法的,所以接口中方法的访问修饰符必须定义成public

  • 接口中不能定义普通的成员变量,只能定义成public static final 成员变量

  • 一个类可以同时实现多个接口,但是需要将抽象方法进行实现,创建接口的时候修饰符可以省略, 系统会自动加上,实现的时候,就必须要添加public

接口的特点:

  • 接口不能创建对象

  • 接口的变量使用public static final修饰,如果不写默认添加

  • 接口的方法为public abstrict,如果不写默认添加

  • 子类必须重写接口中所有的抽象方法后,才能创建对象,

  • 如果子类不不能够重写所有的抽象方法,那么子类必须定义成抽象类

接口的作用:

  • 扩展原有类的功能
  • 设定规则
  • 降低耦合性

问题分析:

1.为什么接口可以实现多继承????

  答:因为接口中的方法都是没有实现的,所以就算有两个父接口的方法名称相同,子类实现接口的时候也不会有什么影响,

    只要重写即可,所以接口与接口之间是存在多继承的。

小小练习:

package com.day04;

public interface HDMI {

    //获取输入信号名称
void input(); //获取设备名称
String getName();
} /////////////////////////////////////////////////////////// class computer implements HDMI{ @Override
public void input() {
System.out.println("电脑信号输入。。。。。。");
} @Override
public String getName() { return "电脑设备";
}
} ///////////////////////////////////////////////////////////// class GameMachine implements HDMI{
@Override
public void input() {
System.out.println("游戏机信号输入。。。。。。");
} @Override
public String getName() {
return "游戏机设备";
}
} ////////////////////////////////////////////////////////////////// class TV {
public void output(HDMI hdmi ) {
//设备录入
hdmi.input();
//获取设备名称
System.out.println("设备名称为:" +hdmi.getName());
}
} class TestHDMI{ public static void main(String[] args) {
//呈现电脑画面
computer com = new computer();
GameMachine game = new GameMachine();
//准备终端设备
TV tv = new TV();
tv.output(game);
}
}

多态: 当一个类能表现出多种状态的时候,我们称这种现象为多态现象

多态的表现形式:让父类的变量去指向子类对象的地址

条件:必须有继承关系

多态的表达形式:  父接口/父类   变量  =   new     子类/父接口的实现类的对象

注意:同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。

多态的特点:

  • 对于成员方法:编译的时候看=左边,运行的时候看=右边

  • 对于成员变量:编译的时候看=左边,运行的时候看=左边

instanceof关键字

  如果直接进行强制转换的时候有可能会出现问题,所以可以使用instanceof进行判断如 对象 instanceof 类名  判断左边的对象与右边的变量是否有所属关系。

练习简单的多态

package com.day04.work01;

import java.util.Random;

public class People {
/*
定义一个类是People,定义两个类,一个是Man,一个是 Woman,Man中有个属性是老婆,有一个方法 lol,
Woman中有个属性是老公,有一个方法shopping,
还 有一个方法生孩子,先判断是否有老公,如果有,就创建 一个对象50%概率是man,50%概率是woman,有一个 返回值,
最后如果是男的调用lol,如果是nv的调用 shopping
*/
} class Man extends People { Woman laopo; void lol() {
System.out.println("玩LOL。。。。。。");
} } class Woman extends People { Man laogong; void shopping() {
System.out.println("购物。。。。。。。");
} public People getBaby() { People peo = null;
if (laogong != null) {
Random ran = new Random();
int x = ran.nextInt(2);
if (x == 0) {
peo = new Man();
} else if (x == 1) {
peo = new Woman();
}
}
return peo;
}
} class TestPeople {
public static void main(String[] args) {
Man man = new Man();
Woman woman = new Woman();
woman.laogong = man; People peo = woman.getBaby();
if (peo == null) {
System.out.println("没有老公,不能生孩子");
return;
}
if (peo instanceof Man) {
Man m = (Man) peo;
m.lol();
} else {
Woman wo = (Woman) peo;
wo.shopping();
} }
}

  

构造方法特点:

  • 构造方法名称必须和类型保持一致。

  • 构造方法没有具体的返回值。

为什么子类的构造方法会去调用父类的构造方法呢????

   因为构造方法本身就是初始化对象的成员变量的,父类 的构造方法也是这个目的,如果不去调用,我们就不知道父类做了什么操作,所以才会隐式的去调用super();

子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作。这样,才可以使用父类中的内容。

如果子类会默认调用父类的无参构造方法,如果父类中又没有无参的构造方法,程序会出现什么问题?编译器 会自动去找到对应的有参的构造方法么?????

  如果父类中没有空参构造方法,那么子类的的构造方法 就会报错,需要我们显示的调用父类的有参数的构造方法。

学习Java的Day04的更多相关文章

  1. 零基础如何学习java更有效呢?

    零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向 ...

  2. 积极主动敲代码,使用Junit学习Java程序设计

    积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...

  3. 如何接触学习java

    信息科技必将是未来的潮流,Java语言必将在时代的进步中发挥不可估量的作用,未来,掌握好一门实用而且有良好应用前景的技术是你们的首要任务. 零基础怎么学Java 多年Java教育培训经验事实表明,零基 ...

  4. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  5. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  6. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  7. 十天来学习java的心得体会

    有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...

  8. 【转】学习JAVA的步骤

      好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...

  9. 应用JConsole学习Java GC

    应用JConsole学习Java GC 关于Java GC的知识,好多地方都讲了很多,今天我用JConsole来学习一下Java GC的原理. GC原理 在我的上一篇中介绍了Java运行时数据区,在了 ...

随机推荐

  1. 和付费网盘说再见,跟着本文自己起个网盘(Java 开源项目)

    本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 网盘项目. 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列. 今天给大家带 ...

  2. GTA5侠盗猎车5中文版破解版绿色版汉化版迅雷下载地址种子实测可用

    GTA5(侠盗猎车5)中文版下载地址(实测可用) 迅雷下载地址:https://www.90pan.com/b1548988 一定要关闭安全软件并且加入白名单 实测通过,关闭杀毒软件可以完美运行,最好 ...

  3. 【HBase】与关系型数据库区别、行式/列式存储

    [HBase]与关系型数据库区别 1.本质区别 mysql:关系型数据库,行式存储,ACID,SQL,只能存储结构化数据 事务的原子性(Atomicity):是指一个事务要么全部执行,要么不执行,也就 ...

  4. 使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置

    使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置 对前端来说锚点是一个很好用的技术,它能快速定位到预先埋好的位置. 但是美中不足的是它会改变请求地址url,当用户使用了锚点的 ...

  5. Attribute (XXX) is obsolete. Its use is discouraged in HTML5 documents.

    这种警告主要是因为这些属性在HTML5中过时了,并不影响代码运行,但是一些强迫症就会非常难受. 解决办法: 将程序的顶部的这句: !DOCTYPE 修改为: !DOCTYPE html PUBLIC ...

  6. “造轮运动”之 ORM框架系列(二)~ 说说我心目中的ORM框架

    ORM概念解析 首先梳理一下ORM的概念,ORM的全拼是Object Relation Mapping (对象关系映射),其中Object就是面向对象语言中的对象,本文使用的是c#语言,所以就是.ne ...

  7. (Java实现) 洛谷 P1781 宇宙总统

    题目背景 宇宙总统竞选 题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: pr ...

  8. Java实现 LeetCode 201 数字范围按位与

    201. 数字范围按位与 给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入 ...

  9. Java实现俄式乘法

    1 问题描述 首先,了解一下何为俄式乘法?此处,借用<算法设计与分析基础>第三版上一段文字介绍: 2 解决方案 package com.liuzhen.chapter4; public c ...

  10. 团体天梯赛L1-041.寻找250

    对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字. 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”. ...