抽象方法

day09_继承、super、this、抽象类

谁说我不能喝 提交于 2020-01-15 07:19:44
继承 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示: 其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。 继承描述的是事物之间的所属关系, 这种关系是: is-a 的关系。 例如,图中兔子属于食草动物,食草动物属于动物。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。 在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当做父类看待。 定义 继承: 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。 好处 提高代码的复用性。 类与类之间产生了关系,是多态的前提。 继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下: 继承演示,代码如下 定义父类 package demo01; class Employee { // 定义name属性 String name; // 定义员工的工作方法 public void work() { System.out.println("尽心尽力地工作"); } } 定义子类 package demo01; /** * 定义讲师类Teacher 继承 员工类Employee */

java基础学习笔记一

我的梦境 提交于 2020-01-15 05:39:33
一、JAVA访问控制修饰符 用于控制类中成员的可见性 1、public(公有):在任何地方可以访问 2、protected(受保护的):子夫类(即使字父类不在同一包)和本包中可以访问 3、default(默认):默认权限,不用写的。在同一包内访问 4、private(私有):只能在同一类中访问 最终总结,就一句话:protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中。 default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。 protected属于子类限制修饰符,而default属于包限制修饰符。 注意: 如果一个类使用public修饰,那该类的类名必须与他所在的源文件名相同。一个.java源文件中有且只有一个public类,顶层类只能用public和默认修饰符(即无修饰符)修饰。 二、JAVA非访问修饰符 为了实现一些其他的功能,Java 也提供了许多非访问修饰符。 static 修饰符:用来修饰类方法和类变量 静态方法: static 关键字用来声明独立于对象的静态方法 静态方法不能使用类的非静态变量 静态方法从参数列表得到数据,然后计算这些数据 静态变量: static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象

java学习笔记8(继承 抽象)

…衆ロ難τιáo~ 提交于 2020-01-15 00:18:02
一、继承的好处 : 1 继承的出现提高了代码的复用性,提高了软件开发效率 2 继承的出现让类与类之间产生了关系,提供了多态的前提     注意事项:       在Java中一个类只能有一个直接的父类,例如:class A{}                            class B{}                             class C extends A,B{}(这种写法是错的)         可以通过多重继承来实现, 如:class A{}                       class B extends A{}                        class C extends B{} (这种写法是正确的)  3继承后子类父类成员变量的特点:     子类对像调用成员变量的时候,子类自己有,使用子类的,子类没有则调用父类的     当子类父类中出现了同名成员变量,通过this 关键字进行区分  例: public class Person { // 人的姓名年龄,成员变量 private String name; private int age; public void setAge(int a) { if (a < 0 || a > 100) { age = 20; } else { age = a; } }

抽象类

扶醉桌前 提交于 2020-01-14 12:55:50
1.什么是抽象类   用关键字abstact修饰的类就成了抽象类。 2.抽象类的特征   (1)它不可以直接使用new来创建实例。   (2)若一定要new出实例则需要通过匿名内部类的方式实现所有抽象方法。   (3)一个实体类继承了抽象类则必须要实现抽象类的所有方法。 3.为什么要用到抽象类    (1)有些方法需要是抽象方法,同时抽象类提供了一种规范,那就是抽象类的子类必须要实现抽象类里的抽象方法,这在多人团队开发或者项目构建及其重要。   (2)有些类具有一些共同的特征,因此可以将这些特征抽取出来构成一个抽象类,其他类就可以通过继承来实现自己的功能。 来源: https://www.cnblogs.com/quanhaijie/p/12191357.html

面向对象开发方法概述

眉间皱痕 提交于 2020-01-14 10:10:01
一个优良的软件系统应该具备:可重用性,可扩展性,可维护性。 软件中的子系统应该具备:结构稳定性,可扩展性,内聚性,可组合性,松耦合。 两种开发方法:结构化开发和面向对象开发 1.1结构化软件开发简介(SASD) 它首先用结构化分析对软件进行需求分析,然后用结构化设计方法进行总体设计,最后进行结构化变成。这种开发方法使得开发步骤明确,SA、SD和SP相辅相成,一气呵成。 结构化设计是属于自顶向下的设计,无法灵活的适应用户不变变化的需求。 例:根据客户输入信息来打印图形,若客户需求改变,需要增加一个画某一种图形的功能,那么需要增加一个常量、增加一个方法、增加一个case分支。 可见,结构化开发制约了软件的可维护性和可扩展性,模块间的松耦合性不高。 1.2面向对象的软件开发简介 面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。具有以下几个优点: ①把软件系统看成是各种对象的集合 ②软件需求的变动往往是功能的变动,二功能的执行者——对象一般不会有大的变化。这使得按照对象设计出来的系统结构比较稳定 ③对象包括属性(数据)和行为(方法),对象把数据及方法的具体实现方式一起封装起来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性,从而提高了软件的可维护性。 ④支持封装、抽象、继承和多态,提高了软件的可重用性

设计模式之行为型模式(四)

风格不统一 提交于 2020-01-12 23:38:30
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式是 GoF 设计模式 中最为庞大的一类,它包含以下 11 种模式。 模板方法(Template Method)模式:定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,使得子类在可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。 命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。 状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。 观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象

java接口

心不动则不痛 提交于 2020-01-12 04:51:32
当一个抽象类中的方法都是抽象方法的时候 ,这是可以将它定义和表示为接口 关键词interface 接口是 抽象类的特例 创建 接口类 package java01; //接口是不能实例化的,只有子类覆盖接口的所有的抽象方法,才可以实例化。 public interface test { public static int num = 1122; // 只是声明,没有实现 abstract void show1(); abstract void show2(); } 接口实现类的代码如下: package java01; public class interfaceDemo implements test { // 实现接口中的方法 @Override public void show1() { // TODO 自动生成的方法存根 } // 实现接口中的方法 @Override public void show2() { // TODO 自动生成的方法存根 } public static void main(String[] args) { 只有实现了接口类中的抽象方法, 才可以实例化。 interfaceDemo infd = new interfaceDemo(); System.out.println(test.num); System.out.println(infd.num

twelve day("多态","抽象类","接口")

断了今生、忘了曾经 提交于 2020-01-11 23:03:35
多态 多态就是一个对象的多种形态 //父类引用子类对象 Aniaml a = new Dog ( ) ; //特点 //1,不能使用子类特有的方法 //2,调用方法时,编译看左边,运行看右边 好处: 可以让我们面向父类,操作所有的子类共性的内容 提升了程序的扩展性 多态的转型 //向下转型其实就是父类引用子类对象 Aniaml a = new Dog ( ) ; //向上转型是为了能够使用子类特有的内容 //与强制类型转换的格式一样 Dog d = ( Dog ) a ; //转型异常:ClassCastException //为了解决这个异常,提供了关键字: instanceof //通过instanceof关键字,可以判断要转的类型是否符合当前类型 boolean 结果 = 多态变量名 instanceof 类名; //转型仅仅是对象的形态发生了变化,对象的地址并没有变化 抽象类 抽象方法和抽象类要使用abstract关键字来修饰 抽象方法:没有方法体的方法就是抽象方法 当无法确认方法体的具体内容时,可以使用抽象方法 抽象类:含有抽象方法的类一定是抽象类 //抽象类格式: public abstract class 类名 { } //抽象方法格式: public abstract 返回值类型 方法名(参数列表) ; 特点 1:抽象类不能直接创建对象;(语法规定) 2:抽象类中

抽象类

喜你入骨 提交于 2020-01-11 10:46:08
定义方法:abstract关键字 1.定义一些方法,子类必须完全实现这个抽象中所有的方法 2.不能从抽象类创建对象,它的意义在于被扩展 3.抽象类通常具有抽象方法,方法中没有大括号 4.抽象方法不必实现具体的功能,由子类来完成 5.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义 6.抽象类的方法可以有参数,也可以为空 7.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数 8.抽象类不能实例化为对象 9.抽象类存在的目的是为了让子类继承 来源: https://www.cnblogs.com/starshine-zhp/p/12179108.html

案例分析:设计模式与代码的结构特性

折月煮酒 提交于 2020-01-10 19:34:05
一、Cocoa设计模式   Cocoa环境的许多架构和机制都能够有效地使用设计模式:抽象设计可以解决特定环境中的重复问题。 本文描述了Cocoa中设计模式的主要实现,主要关注模型(Model) - 视图(View) - 控制器(Controller)和对象建模。 本章的主要目的是让您更深入地了解Cocoa的设计模式,并鼓励您在自己的软件项目中利用这些模式。 二、什么是设计模式?      设计模式是设计的模板,它可以在特定的上下文中解决一般的、重复出现的问题。它是一种抽象工具,在建筑、工程和软件开发等领域都很有用。下面的部分总结了设计模式是什么,解释了为什么它们对于面向对象设计很重要,并讨论了一个示例设计模式。 三、Cocoa如何改变设计模式      可以在OS X和iOS版本中找到适用于Cocoa的设计模式。 基于模式的机制和体系结构在Cocoa框架和Objective-C 的 runtime 和语言中很常见。Cocoa经常把自己独特的旋律放在一个模式上,因为它的设计受语言能力或现有体系结构等因素的影响。   本节包含大多数设计模式的摘要,这些设计模式是在“ 设计模式:可重用面向对象软件的元素”中编目的。 每个部分不仅总结了模式,还讨论了Cocoa的实现。 只列出Cocoa实现的模式,以下各节中的模式描述都与特定的Cocoa上下文有关。Cocoa设计模式的实现有多种形式。