抽象方法和抽象类的格式 使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。 定义格式: 修饰符 abstract 返回值类型 方法名 (参数列表); 代码举例: public abstract void run(); 抽象类 如果一个类包含抽象方法,那么该类必须是抽象类。 定
java继承的三个特点: java只支持单继承,不支持多继承 因为比如,一个子类继承了两个父类,到调用的时候 是会报错的,就好比如:老爸让你继承家庭的一些遗产,在这时你继承了两个, 在现实生活中,儿子继承父亲的遗产,后面这个如果你继承了两个类,就报错了 到底哪个才是真正的父亲,不可能另一个是你干
继承中构造方法的访问特点: 1. 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。 2. 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构 造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,
当我们准备编写一个类的时候,发现某个类有我们所需要的成员变量和方法,如果我们想复用这个类中的成员变量和方法,即在所编写的类中不用声明成员变量就相当于有了这个成员变量,不用定义方法就相当于有了这个方法,那么我们可以将编写的类定义为这个类的子类,子类可以让我们不必一切“从头
所谓面向抽象编程,是指当设计某种重要的类时,不让该类面向具体的类,而是面向抽象类,即所设计类中的重要数据时抽象类声明的对象,而不是具体类声明的对象。 面相抽象编程目的是为了应对用户需求的变化,将某个类中经常因需求变化而需要改动的代码从该类中分离出去。面相抽象编程的核心是让
比喻:画家在外面看到事物,先速写一下,画个大概,然后回到画室再具体画细节。 写论文时,先摘要,写摘要也很需要水平,然后再根据摘要写论文,补充论文的具体内容。 而abstract类就像摘要和速写一样。 1.abstract类中可以有abstract方法 abstract class A{ abstract int min(int x,in
this关键字 含义: 存储的“当前对象”的引用。this代表当前对象。 this使用位置 this在实例初始化相关的代码块和构造器中:表示正在创建的那个实例对象,即正在new谁,this就代表谁 this在非静态实例方法中:表示调用该方法的对象,即谁在调用,this就代表谁。 this不能出现在静态代码块和
对象的向上转型 向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。 当父类引用指向一个子类对象时,便是向上转型。 使用格式: 父类类型 变量名 = new 子类类型(); 如:Animal a = new Cat(); 对象的向下转型 向下转型:父类类型向子类类型向下转
继承中方法的覆盖重写应用场景 1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。 2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。 继承中构造方法的访问特点 当类之间产生了关系,其中各类中的构造方法,又产生了哪些影响呢? 首先我们要回忆两个事情,构造
super和this关键字图解 父类空间优先于子类对象产生 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空 间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构 造方法调用时,一定
抽象的概念 由来 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。 定义 抽象方法 : 没有方法体的方法。
抽象类 概述 由来 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有 意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法 的类就是抽象类。 定义 ~抽象方法 : 没有方法体
继承中成员方法的访问特点: 成员方法不重名: 如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对 应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。代码如下: 继承中方法的覆盖重写、概
继承中成员变量的访问特点: 成员变量不重名: 如果子类父类中出现不重名的成员变量,这时的访问是没有影响的。代码如下: 成员变量重名: 如果子类父类中出现重名的成员变量,这时的访问是有影响的。代码如下: 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量
继承中成员方法的覆盖重写_概念与特点 重写(Override) 概念:在继承关系当中,方法的名称一样,参数列表也一样 重写(Override):方法的名称一样,参数列表一样。覆盖。覆写 重载(Overload):方法的名称一样,参数列表不一样。 方法的覆盖重写特点:创建的是子类对象,则优先用子类方法 继承中成员方法的覆
继承中成员方法的覆盖重写_应用场景 尽量不要修改,建议新建一个类,继承旧的,然后添加新的东西 对于已经有的功能,要想改的话,我们就覆盖重写 继承中成员方法的访问特点 继承关系中,父子类构造方法的访问特点: 1.子类构造方法当中有一个默认隐含的“super()"调用,所以一定是先
父类空间优先于子类对象产生 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空 间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构 造方法调用时,一定先调用父类的构造方法。
当类之间产生了关系,其中各类中的构造方法,又产生了哪些影响呢? 首先我们要回忆两个事情,构造方法的定义格式和作用。 1. 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。 2. 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作
区分子类方法中重名的三种变量 局部变量: 直接写成员变量名本类的成员变量: this.成员变量名父类的成员变量: super.成员变量名 父类 public class Fu { int numfu =20; int num = 100; } 子类继承父类 public class Zi extends Fu{ int numZi = 20;
继承,是一种将类进行层级划分的概念。继承的基本思想是,在一个类的基础上,创造出一个新的类,这个类不仅继承了原来类的属性+方法,还可定制新的属性+方法。原来的类被称为父类,新的类被称为子类。 例如:公司有很多种类,(按照私企国企划分)有私营企业,国营企业。那么,公司就叫父类,私营企业和国营
目录 浅拷贝: 定义拷贝函数: 拷贝函数总结: 浅拷贝: Packet p1; Packet p2; p1 = new; p2 = new p1; 在创建p2对象时,将从p1拷贝其成员变量例如 interger,string和句柄等,这种拷贝方式称为浅拷贝(shallow copy)。 定义拷贝函数: 如果要拷贝对象,指的是首先创建一个新的对象(开辟
对象的三大特性的最后一个特性就是--多态 多态,同一方法名同时出现父类和子类中,为了使父类句柄指向子类对象的时候,也能调用子类的方法,故使用虚方法,在父类的方法名前加上 virtual 添加一个总结: virtual 最好添加到 最顶层(祖先),这样无论哪一层都可以使用 virtual 这个 特性 调用
一、设计模式之单一之责原则 定义 单一之责原则的定义是:有且仅有一个原因引起类或接口的变更。 反例 电话通话有4个过程:拨号、通话、回应、挂断,代码实现如下: public interface IPhone { // 拨通电话 void dial(); // 通话 void chat(); // 通话完毕、挂断电话 voi
1 子类对象的特点 子类对象可以通过调用继承的方法,操作没有继承(未继承)的成员变量。 子类自己的实例方法可以操作自己的成员变量。 子类继承的方法用来操作继承的成员变量和未继承的成员变量。 真正意义的继承是 子类自己写的实例方法一定能够操作继承的成员变量。 但有未继承的成
所谓子类继承父类的成员变量作为自己的成员变量,就好像它们是在子类中直接声明一样,可以被子类中自己定义的任何实例方法操作,,也就是说,一个子类继承的成员应当是这个类的完全意义的成员,如果子类中定义的实例方法不能操作父类的某个成员变量,该成员变量就没有被子类继承;所谓子类继