Java自学-接口与继承 抽象类】的更多相关文章

Java 抽象类 在类中声明一个方法,这个方法没有实现体,是一个"空"方法 这样的方法就叫抽象方法,使用修饰符"abstract" 当一个类有抽象方法的时候,该类必须被声明为抽象类 步骤 1 : 抽象类 为Hero增加一个抽象方法 attack,并且把Hero声明为abstract的. APHero,ADHero,ADAPHero是Hero的子类,继承了Hero的属性和方法. 但是各自的攻击手段是不一样的,所以继承Hero类后,这些子类就必须提供不一样的attack…
设计Java的接口 在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击 这时候,就可以使用接口来实现这个效果. 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们就一定能够进行物理攻击. 步骤 1 : 物理攻击接口 创建一个接口 File->New->Interface AD ,声明一个方法 physicAttack 物理攻击,但是没有方法体,是一个"空"方法 package charactor; public interface AD…
Java 内部类 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤 1 : 非静态内部类 非静态内部类 BattleScore "战斗成绩" 非静态内部类可以直接在一个类里面定义 比如: 战斗成绩只有在一个英雄对象存在的时候才有意义 所以实例化BattleScore 的时候,必须建立在一个存在的英雄的基础上 语法: new 外部类().new 内部类() 作为Hero的非静态内部类,是可以直接访问外部类的private实例属性name的 package characto…
Java中的对象转型 示例 1 : 明确引用类型与对象类型的概念 首先,明确引用类型与对象类型的概念 在这个例子里,有一个对象 new ADHero(), 同时也有一个引用ad 对象是有类型的, 是ADHero 引用也是有类型的,是ADHero 通常情况下,引用类型和对象类型是一样的 接下来要讨论的类型转换的问题,指的是引用类型和对象类型不一致的情况下的转换问题 package charactor; public class Hero { public String name; protecte…
UML 图 步骤 1 : UML 图 -- 类之间的关系 UML-Unified Module Language 统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系 步骤 2 : 解释UML-类图 步骤 3 : 解释UML-接口图 步骤 4 : 解释UML-继承关系 带箭头的实线,表示 Spider,Cat, Fish都继承于Animal这个父类. 步骤 5 : 解释UML-实现关系 表示 Fish实现了 Pet这个接口…
默认方法 步骤 1 : 什么是默认方法 默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法 Mortal 这个接口,增加了一个默认方法 revive,这个方法有实现体,并且被声明为了default package charactor; public interface Mortal { public void die(); default public void revive() { System.out.println("本英雄复活了"); } }…
Java的修饰符final final修饰类,方法,基本类型变量,引用的时候分别有不同的意思. 示例 1 : final修饰类 当Hero被修饰成final的时候,表示Hero不能够被继承 其子类会出现编译错误 package charactor; public final class Hero extends Object { String name; //姓名 float hp; //血量 } 示例 2 : final修饰方法 Hero的useItem方法被修饰成final,那么该方法在AD…
Java中的超类 Object 步骤 1 : Object类是所有类的父类 声明一个类的时候,默认是继承了Object public class Hero extends Object package charactor; import property.Item; public class Hero extends Object { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public v…
Java的多态 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父类引用指向子类对象 示例 1 : 操作符的多态 同一个操作符在不同情境下,具备不同的作用 如果+号两侧都是整型,那么+代表 数字相加 如果+号两侧,任意一个是字符串,那么+代表字符串连接 package charactor; public class Hero { public String name; protected float hp; public static void main(String[] ar…
Java 重写方法 子类可以继承父类的对象方法 在继承后,重复提供该方法,就叫做方法的重写 又叫覆盖 Override 步骤 1 : 父类Item 父类Item有一个方法,叫做effect package property; public class Item { String name; int price; public void buy(){ System.out.println("购买"); } public void effect() { System.out.println…
Java的super关键字 步骤 1 : 准备一个显式提供无参构造方法的父类 准备显式提供无参构造方法的父类 在实例化Hero对象的时候,其构造方法会打印 "Hero的构造方法 " package charactor; import property.Item; public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public void useItem(…
Java中的方法隐藏 与重写类似,方法的重写是子类覆盖父类的对象方法 隐藏,就是子类覆盖父类的类方法 步骤 1 : 父类 父类有一个类方法 :battleWin package charactor; public class Hero { public String name; protected float hp; //类方法,静态方法 //通过类就可以直接调用 public static void battleWin(){ System.out.println("hero battle wi…
接口 java只支持单继承,即一个类只能有一个父类,因此需要接口来实现多重继承. 接口的定义 类和接口的区别:一个类通过继承接口的方式,从而来继承接口的抽象方法.类描述对象的属性和方法,接口则包含类要实现的方法. 接口的声明语法方式: <span style="color:#000000"><code>[可见度] <span style="color:#000088">interface</span> 接口名称 [&l…
一个接口可以继承多个接口. interface C extends A, B {}是可以的. 一个类可以实现多个接口: class D implements A,B,C{} 但是一个类只能继承一个类,不能继承多个类 class B extends A{} 在继承类的同时,也可以继承接口: class E extends D implements A,B,C{} 这也正是选择用接口而不是抽象类的原因…
实际概念区别:区别1:不同的修饰符修饰(interface),(extends)区别2:在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持'继承'的多继承哦而继承在java中具有单根性,子类只能继承一个父类区别3:在接口中只能定义全局常量,和抽象方法而在继承中可以定义属性方法,变量,常量等...区别4:某个接口被类实现时,在类中一定要实现接口中的抽象方法而继承想调用那个方法就调用那个方法,毫无压力 接口是:对功能的描述      继承是:什么是一种什么 始终记者:你可以有多个干爹(接口…
在Java中定义个接口,之后可以定义不同的类来实现接口,如果有个函数的参数为这个接口的话,就可以对各自的类做出不同的响应. 如: interface animal { public void info(); } class dog implements animal { public void info() { System.out.println("dog class"); } } class cat implements animal { public void info() {…
今天阅读别人的代码才发现,接口是可以继承接口的 一个类只能extends一个父类,但可以implements多个接口. 一个接口则可以同时extends多个接口,却不能implements任何接口. Java中的接口是支持多继承的.…
1>继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改 Parent 构造方法的代码,显式调用 GrandParent 的另一个构造函数,注意这句调用代码是否是第一句,影响重大 源代码: class Grandparent{ public Grandparent(){ System.out.println("GrandParent Created."); } public Grandparent(Str…
父类与子类的构造方法: 如果父类中有一个默认无参的构造方法,那么子类的构造方法中会自动进行调用.如果父类有自己的构造方法,且这时父类没有默认无参的构造方法,那么在子类的构造方法中,必须要调用父类的某个构造方法,而且必须是在构造方法的第一个语句中进行调用,格式为super():如果放在了别的地方不能体现构造函数的作用了,程序报错. “如果没有这个约束,那么子类的某个继承自父类的方法可能会使用到父类中的一些变量,而这些变量并没有进行初始化,从而产生一些难以预料的后果,因此构造子类的对象前,必须构造父…
一.抽象类 在某些情况下,父类知道其子类应该包含哪些方法,但是无法确定这些子类如何实现这些方法.这种有方法签名但是没有具体实现细节的方法就是抽象方法.有抽象方法的类只能被定义成抽象类,抽象方法和抽象类必须使用abstract修饰.抽象类里可以没有抽象方法. 1.1 抽象类和抽象方法 抽象类和抽象方法的规则如下: 1.抽象类和抽象方法都必须使用abstract修饰符修饰,抽象方法不能有方法体 2.抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例.即使这个抽象类里不包含抽…
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确地知道这些子类如何实现这些方法.例如定义了一个Shape类,这个类应该提供一个计算周长的方法calPerimeter(),但不同Sha…
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而不是面向实现类编程,以期通过这种方式来降低程序的耦合. 但是在讨论这些之前,我们先要搞清楚一个问题: 接口还是抽象类? 为什么会有这个问题,因为在某些情况下,接口和抽象类很像: 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其它类实现或者继承. 接口和抽象类都可以包含抽象方法,实现接口或者继承抽象…
一.继承: 关键字extends /* 定义一个父类:人类 定义父类格式:public class 父类名称{ } 定义子类格式:public class 子类名称 extends 父类名称{ } */ 代码示范: *要点: 1.子类中在main方法中创建父类对象可调用父类方法: 2.不加关键字直接访问本方法局部变量(可重名时区分): 3.使用this关键字访问本类成员变量(可重名时区分): 4.使用super关键字访问父类成员变量(可重名时区分): 5.如果存在方法的重名:父类与子类有重名方法…
前言 前面简单学习了面向对象的知识,知道了其两个重要的特性,继承与多态,今天就围绕着面向对象的这两个特性,将继承与多态及相关的几个几个定义重载与重写,抽象类与接口的相关知识具体学习一下. 类的继承 关于类的继承定义,前面多少都有些了解了,可以简单的理解为父亲和儿子的关系,儿子会继承父亲的属性和方法,父亲就是父类,儿子就是子类.他们的关系就是继承关系. 继承是面向对象的重要观念,它的作用是巨大的,它使得程序架构具有一定的弹性,在程序中复用一些已经定义完善的类可以减少软件的开发周期,也可以提高软件的…
一.总结 1.使用extends关键字继承,eg: class Student extends Persion { ...}; 2.Java编程规范中类的首字母大写,方法的首字母小写单词首字母代谢,eg: setYourName() 3.子类继承父类后可以重写(override)父类的成员方法.如果子类override了,子类中再调用就是调用自己的,若没有提供,调用的就是父类的. 4.对象实例化的时候,会先调用父类的构造函数,然后再调用子类的构造方法.若类没有定义构造方法,java编译器会帮你生…
前言 C#和Java关于类.抽象类.接口使用方式基本相似,只是对应关键字使用不同罢了,本节呢,我们只是对照C#和Java中关于这三个概念在具体使用时,看看有哪些不一样的地方. 类继承 C#和Java在定义类方式上是一致的,这点没有什么太多要讲解的,我们直接进入到类继承上,在Java中实现继承通过extends关键字,而在C#中则是以冒号(:)来继承,非常优雅而简洁,Java如下: class Animal{} class Tiger extends Animal{} 在C#中如下: class…
 1.private 修饰属性或者方法,只能在本类中被访问,定义后需要加get()set()方法,这样提高数据的安全性 私有属性虽然不能直接访问,但是其对象 或者 子类对象可以通过公有方法进行设值和获取,这就是为什么最好加get和set方法 私有方法存在于本类并且不能在其他类中被使用 package my_acm; class Hello{ private int id=12; public int getid(){ return this.id; } public void Setid(int…
4.继承 面向对象概念-类与对象的关系 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private-构造方法/构造器-this关键字-static关键字(javadoc制作工具类) -代码块 继承:方法重写-super-子类实例化过程-final-抽象类-接口 多态: 4.1 继承的概述:extends(继承,扩展) 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要从抽取出来的那个类扩展(extends)即可需要扩展的类称为子类,…
关于Java中的对象.类.抽象类.接口.继承之间的联系: 导读: 寒假学习JavaSE基础,其中的概念属实比较多,关联性也比较大,再次将相关的知识点复习一些,并理顺其中的关系. 正文: 举个例子:如果现在要想定义一个动物,那么动物肯定是一个公共的标准,而这个公共标准就可以通过接口来完成. 在动物中又分为两类:哺乳动物.卵生动物,而这个标准属于对动物的标准进一步细化,应该称为子标准,所以此种关系可以使用接口的继承来表示. 而不如动物i可以继续划分为人.狗.猫等不同的类型,由于这些类型不表示具体的事…
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.…