一、接口(interfance)

接口就像是一种约定,比如物理攻击英雄一定能够实现(implements)物理攻击,物理攻击就是接口,并且物理英雄必须提供接口中声明的方法

//接口
public interface AD {//物理伤害public void physicAttack();
}
//类
public class ADHero extends Hero implements AD{public void physicAttack() {System.out.println("进行物理攻击");}
}

二、对象转型

和基本类型转化差不多理解:父类转子类需要强制,并且风险自担;子类转父类是可以的

A instanceof B===用来判断引用A指向对象是否是B的子类或者实例对象,返回boolean类型

三、重写-------理解成覆盖override即可

子类可以继承父类的对象方法,继承之后重复该方法即覆盖该方法

四、多态-----同一个类型并且是同一个方法,但是呈现出不同的状态

条件:1、1. 父类(接口)引用指向子类对象
                  2. 调用的方法有重写

public class Item {String name;int price;public void effect() {System.out.println("物品正在使用中... ");}public static void main(String[] args) {Item i1= new LifePotion();Item i2 = new MagicPotion();i1.effect();i2.effect();}
}

五、隐藏-----与重写类似,只不过这里是子类覆盖父类的类方法(static);而重写是对象方法

六、 supper关键字-----理解成可利用此关键字可直接调用父类构造方法

  public ADHero(String name){super(name);System.out.println("AD Hero的构造方法");}

七、Object-----所有类的父类 ,就是说声明一个类时都是默认继承Object

public class Hero extends Object

toString-----返回当前对象的字符串表达

 public static void main(String[] args) {Hero h = new Hero();h.name = "盖伦";System.out.println(h.toString());//直接打印对象就是打印该对象的toString()返回值System.out.println(h);}

finalize()方法-----当一个对象没有任何引用指向时,就满足垃圾回收的条件;当垃圾足够多                                      时方法就会被调用

注意的是:finalize() 不是开发人员主动调用的方法,而是由虚拟机JVM调用的。

 public void finalize(){System.out.println("这个英雄正在被回收");}public static void main(String[] args) {//只有一引用Hero h;for (int i = 0; i < 100000; i++) {//不断生成新的对象//每创建一个对象,前一个对象,就没有引用指向了//那些对象,就满足垃圾回收的条件//当,垃圾堆积的比较多的时候,就会触发垃圾回收//一旦这个对象被回收,它的finalize()方法就会被调用h = new Hero();
}

equals()---两个对象内容是否相同

 System.out.println(h1.equals(h2));

==     也是判断两个对象是否相同,不过注意的是它不是Object方法

八、final修饰符-----只要被他修饰上,那么完了,类不能继承,方法不能重写,基本类型只有一次          赋值机会,引用只能指向一次对象

public final class//类
public final void  stop//方法
final String name;
final hero h=new hero();

九、abstract(抽象类)----就是一个空方法;注意的是类里面有抽象方法时,该类必须被声明成抽                象类,并且不能被直接实例化

十、内部类-----四种(非静态内部类、静态内部类、匿名类、本地类)

非静态类语法:new 外部类().new 外部类()

public class Hero {class BattleScore {int kill;public void legendary() {if (kill >= 8)System.out.println(name + "超神!");elseSystem.out.println(name + "尚未超神!");}}public static void main(String[] args) {Hero garen = new Hero();garen.name = "盖伦";// 实例化内部类// BattleScore对象只有在一个英雄对象存在的时候才有意义// 所以其实例化必须建立在一个外部类对象的基础之上BattleScore score = garen.new BattleScore();score.kill = 9;score.legendary();}
}

静态类语法:new外部类. 静态内部类()

注意与非静态类不同,静态内部类实例化不需要外部类的实例为基础,就可以直接实例化 ,并且因为没有一个外部类的实例,所以在静态内部类里面不可以访问外部类的实例属性和方法,除了可以访问外部类的私有静态成员外,静态内部类和普通类没什么大的区别

public class Hero {public String name;protected float hp;private static void battleWin(){System.out.println("battle win");}//敌方的水晶static class EnemyCrystal{int hp=5000;//如果水晶的血量为0,则宣布胜利public void checkIfVictory(){if(hp==0){Hero.battleWin();//静态内部类不能直接访问外部类的对象属性System.out.println(name + " win this game");}}}public static void main(String[] args) {//实例化静态内部类Hero.EnemyCrystal crystal = new Hero.EnemyCrystal();crystal.checkIfVictory();}

匿名类----声明一个类的同时实例化它,只是这个类没有命名

比如为了快速使用,直接实例化一个抽象类并当场实现其抽象方法

public abstract class Hero {String name; //姓名float hp; //血量public abstract void attack();public static void main(String[] args) {ADHero adh=new ADHero();//通过打印adh,可以看到adh这个对象属于ADHero类adh.attack();System.out.println(adh);Hero h = new Hero(){//当场实现attack方法public void attack() {System.out.println("新的进攻手段");}};h.attack();//通过打印h,可以看到h这个对象属于Hero$1这么一个系统自动分配的类名System.out.println(h);}}

本地类------理解为有名字的匿名类即可

注意内部类与匿名类不一样的是,内部类必须声明在成员的位置,即与属性和方法平等的位置。本地类和匿名类一样,直接声明在代码块里面,可以是主方法,for循环里等等地方。详情见代码。

另外在匿名类中使用外部的局部变量,外部的局部变量必须修饰为final

public abstract class Hero {String name; //姓名float hp; //血量public abstract void attack();public static void main(String[] args) {//与匿名类的区别在于,本地类有了自定义的类名class SomeHero extends Hero{public void attack() {System.out.println( name+ " 新的进攻手段");}}SomeHero h  =new SomeHero();h.name ="地卜师";h.attack();}}

十一、默认方法(JDK8新特性)------指的是接口也可以提供具体方法了,以前只能提供抽象方法

public interface Mortal {public void die();//用default修饰default public void revive() {System.out.println("本英雄复活了");}
}

接口和继承知识点总结相关推荐

  1. Java常用知识点汇总(基础:数组,类与对象,接口与继承)

    目录 数组 1.引用 2.增强型for循环 3.复制数组 arraycopy() 4.针对数组的工具类 Arrays 5.选择法排序 6.冒泡排序 7.练习-二维数组中的查找(剑指offer) 类与对 ...

  2. java 接口 抽象类 继承 重载 重写 多态

    4.1 抽象类 在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的. 同时,抽象类体现了数据抽象的思想,是实现多态的一种机制.它定义了一组抽象的方法, ...

  3. 基类与接口混合继承的声明问题 [C#, Design] -Allen Lee's Magic

    Updated on Friday, November 19, 2004 Written by Allen Lee 1. 问题初现 今天,查看<接口继承的声明问题>一文的反馈,发现Ninp ...

  4. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  5. 第10章 接口、继承与多态----抽象类和接口

    一.抽象类 在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理.回想继承和多态原理,继承树中越是在上方的类越抽象,如:鸽子类继承鸟类.鸟类继承动物类等.在多态机制中,并不需要 ...

  6. Java进阶篇(一)——接口、继承与多态

    前几篇是Java的入门篇,主要是了解一下Java语言的相关知识,从本篇开始是Java的进阶篇,这部分内容可以帮助大家用Java开发一些小型应用程序,或者一些小游戏等等. 本篇的主题是接口.继承与多态, ...

  7. java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗

    一.简单总结,需要重写的有 普通类继承抽象类,重写所有抽象类方法:(不包括普通方法) 普通类继承接口,重写所有接口方法.(不包括default关键字修饰的方法) 详解见下: 普通类继承,并非一定要重写 ...

  8. C#接口-接口的继承

    类之间可以继承,和类一样,接口也允许继承.C#中接口可以多继承,接口之间可以互相继承和多继承.普通类和抽象类可以继承接口.一个类可以同时继承一个类和多个接口,但是接口不能继承类. 假如你是一名在职学习 ...

  9. 《Java程序设计》实验报告——Java的接口与继承

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

最新文章

  1. 9、 Struts2验证(声明式验证、自定义验证器)
  2. 智源出品 | 超大规模智能模型产业发展报告(附下载)
  3. Entity Framework context per request
  4. post和get请求的区别
  5. 包管理工具conda极简教程
  6. ORACLE DUAL表详解
  7. Linux安装wireshark并配置权限
  8. Java21天打卡Day7-循环
  9. 【渝粤题库】陕西师范大学180213《消费经济学》作业 (高起本)
  10. feedburner怎么用_FeedBurner 不能用了,还有 FeedSky,附个相关插件
  11. 如何搭建企业自己的邮箱服务器,企业如何搭建属于自己的企业邮箱
  12. c语言lookup函数怎么用,lookup函数的使用方法,lookup函数怎么用?
  13. 【聚类】算法及其评估指标
  14. [转]爬虫的现状和反爬虫
  15. matlab怎么绘制零极点,matlab中画系统零极点的方法
  16. 致广大而尽精微,极高明而道中庸
  17. Prometheus监控模板
  18. 区块链与大数据结合分析
  19. BlazeDS简单介绍
  20. java导出csv小程序_微信小程序——使用excel-export导出excel

热门文章

  1. 遗传算法,vector
  2. jqGrid----下拉列表框下拉联动,dataEvents回调函数。
  3. java后端开发需要会什么技能,从事Java后端开发,需要掌握哪些知识和技能?
  4. 微商扫码发货管理系统开发
  5. 北京智源大会圆满闭幕!150名国际AI领袖、50万名专业观众共襄盛会(含嘉宾观点集锦)...
  6. 一文学会会计记账-会计科目、借贷关系和会计分录的小白理解
  7. k8s 拉取镜像失败_kubernetes k8s.gcr.io拉取镜像失败问题
  8. 【BC260Y】 AT指令接入移动oneNet平台流程
  9. 如何恢复微信聊天记录,3个简单方法
  10. 微信小游戏 - Canvas/WebGL Demo 移植