抽象方法

抽象和封装

前提是你 提交于 2019-12-27 03:51:27
抽象和封装: 一、面向对象。 第一步:发现类 第二步:发现类的属性 第三步:发现类的方法 软件出现的目的: 用计算机的语言描述现实世界。 用计算机解决现实世界的问题。 面向对象设计和开发程序的好处: 交流更加流畅。 提高设计和开发效率。 从现实中抽象出类分三步: 找出它的种类 找出它的属性 找出它的行为 二、类图。 用于分析和设计“类”。 直观、容易理解。 三、构造方法。 1、初始化成员变量。 2、如果没有给出构造方法,系统会默认提供一个无惨构造方法。 3、如果给出构造方法,会把默认构造方法覆盖。 定义: 方法名称和类名一致的方法,没有任何返回类型,并且也没有 void。 publid class Dog{ publid Dog(){ } } Dog d=new Dog(); 四、this 与 重载。 this关键字: 1、当局部变量和成员变量重名时。 2、当构造方法互相调用时,必须是第一句。 this 关键字的用法: 调用属性:this . a =0;this . name=“”; 调用方法:this . print(); 调用构造方法:this(“字”,10,100,“字”); 重载: 方法重载 ( overload ) 的规则: 在一个类中定义多个相同名字的方法,但参数不同。 方法重载和返回值、修饰符无关。 重写(overwrite)。 五、封装。 封装:

Java抽象类

余生颓废 提交于 2019-12-26 20:21:41
什么是类? 具有相同特征和行为的事物的统称,称为类。 类有什么作用? 类的作用是创建对象。 类里可以包含哪些内容? 属性(静态属性,非静态属性) 方法(静态方法,非静态方法) 构造器 代码块(静态代码块,非静态代码块) 类 什么是抽象类? 但在某种情况下, 父类只能知道子类应该具备一个什么的方法, 但是父类自己实现了没有意义而且父类又能知道子类如何实现该方法. Java提供了解决方案: Java中 允许父类只提供一个方法声明, 不提供具体的实现,具体的实现,交给子类来完成, 该方法称为是抽象方法. 拥有一个或多个抽象方法的类, 称为是抽象类. 抽象类和普通的类非常相似。普通类能包含的内容,抽象类都可以包含。 唯一的不同点就是, 抽象类不能创建对象 。 abstract关键字 A, abstract 修饰的类称为是抽象类 访问控制符 abstract class 类名{ } B, abstract 修饰的方法为抽象方法 访问控制修饰符 abstract 返回值类型 方法名(参数列表) C,拥有一个或多个抽象方法的类必须是抽象类 D,抽象类中可以没有抽象方法 E,抽象类中可以有非抽象方法 F,抽象类不能创建实例, 必须被继承 G,子类继承自抽象类, 要不重写抽象方法, 要不子类仍然是抽象类 如何创建一个抽象类? 创建抽象类, 只需添加一个关键字 abstract . 语法格式如下:

抽象类、接口

为君一笑 提交于 2019-12-26 11:47:55
抽象类 概述 动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。 不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是给出一个声明即可。 在Java中,一个没有方法体的方法应该定义为抽象方法,类中有抽象方法的类被称为抽象类,用abstract修饰 格式 //抽象类 abstract class 类名 { } //抽象方法 public abstract 返回值类型 方法名 ( ) ; 特点: 抽象类和抽象方法必须用abstract关键字修饰 抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类 抽象类中可以有构造方法,但抽象类不能进行实例化,构造方法是为了在子类创建对象时对父类数据进行初始化 可以按照多态的方式,由父类引用指向子类对象 抽象类的子类要么是抽象类,要么重写抽象类中的所有抽象方法 abstract class Animal { public abstract void eat ( ) ; public void sleep ( ) { System . out . println ( "sleep..." ) ; } } class Dog extends Animal { @Override public void eat ( ) { System . out . println ( "dog eat...

python基础知识学习第八天

白昼怎懂夜的黑 提交于 2019-12-26 04:19:51
面向对象编程OOP 面向对象 对象的概念是面向对象技术的核心。在现实世界里,我们面对的所有事物都是对象,如计算机、电视机、自行车等。在面向对象的程序设计中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。 面向对象的三个主要特性: 对象的行为:可以对对象施加哪些操作;如电视机的开、关、转换频道等。 对象的状态:当施加那些方法时,对象如何响应;如电视机的外形、尺寸、颜色等; 对象的标识:如何区分具有相同行为与状态的不同对象。 基本概念: 对象,所谓数据封装就是将一组数据与这组数据有关操作组装在一起,形成一个实体,这个实体就是对象。 类(Class)具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。 成员:对象的状态和行为。 属性:对象的状态,一个对象用数据值来描述它的状态。 方法:对象的行为,用于改变对象的状态,对象及其操作就是对象的行为 成员 属性 方法 常量 魔术方法 构造 析构 __clone __toString __call 继承: 一个对象拥有或者使用另一个对象的成员信息,称之为这个对象继承自另一个对象。 Php中,通过在类上,使用特殊的操作达到目的。 通过在定义类时,利用 extends 来指明当前类对象继承那个类的对象! 重写override 集成时,如果发生成员冲突,php的处理方式,为重写。就是子类同名成员会覆盖父类同名成员

面向对象-抽象类abstract

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-25 23:44:29
父类当中的方法不确定如何进行{}方法体实现, 那么这就应该是一个抽象方法 抽象方法:就是加上关键字abstract,去掉大括号,直接分号结束 抽象方法没有方法体 抽象类:抽象方法所在的类必须是抽象类,class前加abstract 如何使用抽象类和抽象方法 1.不能直接创建抽象类对象 2.必须用一个子类来继承抽象类 3.子类必须覆盖重写抽象父类当中所有的抽象方法 4.创建子类对象,进行使用 //这是一个抽象动物父类 public abstract class Animal { //抽象方法,没有方法体 public abstract void eat ( ) ; } //子类继承父类 public class Cat extends Animal { //覆盖重写父类中的抽象方法 public void eat ( ) { System . out . println ( "猫吃鱼" ) ; } } 抽象类使用的注意事项: 1.抽象类不能创建对象,只能创建其非抽象的子类对象 2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的 3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类 4.抽象类的子类,必须重写抽象父类所有的抽象方法,否则无法编译,除非该子类也是抽象类 来源: CSDN 作者: weixin_46016613 链接: https:/

七大设计原则

独自空忆成欢 提交于 2019-12-24 11:57:44
1.开闭原则(Open Close Principle) 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。这个原则有两个特性,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。这就是“开放-封闭原则”的精神所在 比如,刚开始需求只是写加法程序,很快在client类中完成后,此时变化没有发生,需求让再添加一个减法功能,此时会发现增加功能需要修改原来这个类,这就违背了开放-封闭原则,于是你就应该考虑重构程序,增加一个抽象的运算类,通过一些面向对象的手段,如继承、动态等来隔离具体加法、减法与client耦合,需求依然可以满足,还能应对变化。此时需求要添加乘除法功能,就不需要再去更改client及加减法类,而是增加乘法和除法子类即可。 绝对的修改关闭是不可能的,无论模块是多么的‘封闭‘,都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。在我们最初编写代码时,假设变化不会发生,当变化发生时

工厂方法模式与抽象工厂模式

此生再无相见时 提交于 2019-12-24 10:40:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 工厂方法设计模式: 一个抽象的产品类,派生出多个不同的产品,一个抽象工厂类,派生出多个不同的抽象工厂,每个工厂对应一个抽象的产品类。 缺点:在我们想要增加一个新的产品的时候,我们需要新增 一个对应的工厂。 举个例子:例如一个运算类,有加法类继承它,减法类继承它,同时实现它的抽象方法(计算方法), 这时候我们就需要有加法工厂,减法工厂来与运算类一一对应。 客户端如果需要减法功能,就从减法工厂中获取一个减法类的实例,然后调用其方法即可。 public abstract class operation { //产品抽象基类 public int number1; public int number2; public abstract Object operation(); } public class add extends operation { //加法类 @Override public Object operation() { return number1+number2; } } public abstract class factory { //基本工厂,返回产品基类 public abstract operation getOpFactory(); } public class AddFactory

设计模式之建造者模式

旧街凉风 提交于 2019-12-24 09:18:41
建造者模式是日常开发中比较常见的设计模式,它的主要作用就是将复杂事物创建的过程抽象出来,该抽象的不同实现方式不同,创建出的对象也不同。通俗的讲,创建一个对象一般都会有一个固定的步骤,这个固定的步骤我们把它抽象出来,每个抽象步骤都会有不同的实现方式,不同的实现方式创建出的对象也将不同。举个常见的例子,想必大家都买过电脑,电脑的生产或者组装其实就是属于建造者模式,我们知道,电脑的生产都需要安装CPU、内存条、硬盘等元器件。我们可以把这个安装步骤抽象出来,至于到底装哪种CPU,比如i5还是i7就是对该抽象安装步骤的具体实现。 建造者模式分为两种,一种为经典建造者模式,另一种为变种建造者模式。我们来挨个看下: 经典Builder模式 我们先来看下经典Builder模式,先上UML类图: 从上图可以看到,经典Buider模式中有四个角色: 要建造的产品Product – 组装的电脑 抽象的Builder – 装CPU、内存条、硬盘等抽象的步骤 Builder的具体实现ConcreteBuilder – 对上述抽象步骤的实现,比如装i5CPU、8G内存条、1T硬盘 使用者Director – 电脑装机人员 接下来我们来看下用代码如何实现上述组装电脑的过程: 1.首先我们先来创建一个Computer类: public class Computer { /*CPU*/ private String

接口

故事扮演 提交于 2019-12-23 22:15:40
接口一种规范,实现接口就是实现接口中的规定的抽象方法 1.定义接口的语法格式,public interface 接口名称{内容} 2.接口中不能定义构造方法,可以放静态常量 (默认的修饰就是public static final 数据类型 变量名=值) 3.接口中不能定义普通方法,但是可以定义抽象方法,方法默认的修饰符是: public abstract 返回值 方法名(); public interface Usb { public static final String name = "asd" ; //静态常量命名原则,默认的修饰就是public static final String NAME_USER = "qwe" ; //在接口里定义抽象方法 public abstract void method ( ) ; } 4.使用implements关键字实现接口,实现接口的同时必须实现接口中的抽象方法 public class Upan implements Usb { //实现method()抽象方法 public void method ( ) { System . out . println ( "传入数据" ) ; } } 5.在创建对象的时候,将接口当成父类来处理,使用多态的方式创建对象 public class Test { public static void

[面向对象学习笔记] 封装、抽象、继承、多态分别可以解决那些编程问题

不羁岁月 提交于 2019-12-23 18:17:00
封装 是什么封装 封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方法来访问内部信息或者数据。例如在Java中我们在定义一个类时,会给一个类加属性,我们给将这些类属性设置为private,然后给这些属性添加一些方法,有的只能被获取,不能被修改,有些可以被修改,但是不可以被重置。在Java中是通过一些关键字来提供访问权限控制。如果Java中没有提供这些关键词,所有的属性默认都是public的,那么外部的代码都可以随意的更改对象中属性的值,这样是无法达到隐藏信息和保护数据的目的,也就是无法支持封装特性。 封装的意义 如果我们对类中属性的访问不加以控制,那任何代码都以访问、修改类中的属性,虽然这样看起来更加灵活,但是灵活以为着不可控,属性可以随意被修改,修改的逻辑可能散落在哥哥角落,势必会影响代码的可读性、可维护性。 除此之外,类通过有效的方法暴露必要的操作,也能提高类的易用性。我们把属性封装起来,暴露少许的几个不要的方法给调用者,调用者就不需要了解太多背后的业务细节,用错的概率就减少很多。 抽象 什么是抽象 在面向对象编程中,我们常借助编程语言提供的接口类或者抽象类这两种语法机制,来实现抽象这一特性。例如:在Java中,是通过interface和abstract关键字语法来实现。这种抽象是指把一些类的公共行为抽象到更高的层次。