抽象类

java基础学习3---面向对象

妖精的绣舞 提交于 2020-02-27 10:59:35
1、面向对象 对象:用来描述客观事物的一个实体,由一组属性和方法构成。 面向对象: 人关注对象 人关注事物信息 类 确定对象将会拥有的属性和方法 类的特点: 类是对象的类型 具有相同属性和方法的一组对象的集合。 类和对象的关系 类是抽象的概念 对象是一个能看到的具体实体 类是对象的类型 对象是特定类型的数据 具体开发中,先定义类再实例化对象。 对象实例化 Cat cat = new Cat ( ) ; 实例化过程分两部分: 声明对象 Cat cat 实例化对象 new Cat() 注意: 1.每次new对象都会产生新的实例化对象。 2.多个对象可以指向同一块实例化空间。 3.对象必须被实例化之后才能使用。 4.对象间的引用,实际上传递的是堆内存的引用。 构造方法 1、构造方法与类同名,没有返回值。 2、只能在对象实例化的时候调用。 3、没有指定构造方法时,系统会自动添加无参的构造方法。 4、当指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。 5、一个类中可以有多个构造方法。 单一职责原则 单一职责原则(SRP:single responsibility principle),又称单一功能原则。 面向对象的五个基本原则之一(SOLID:SRP、OCP开放封闭原则、LSP里氏替换原则、DIP依赖倒置原则、ISP接口分离原则)。

Java 基础 接口和多态

帅比萌擦擦* 提交于 2020-02-27 08:58:26
接口 接口的概念   接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。   接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。   请记住:一切事物均有功能,即一切事物均有接口。 接口的定义   与定义类的class不同,接口定义时需要使用interface关键字。   定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。    定义格式: public interface 接口名 { 抽象方法1; 抽象方法2; 抽象方法3; }   使用interface代替了原来的class,其他步骤与定义类相同:    接口中的方法均为公共访问的抽象方法    接口中无法定义普通的成员变量   类实现接口   类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。    其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能: class 类 implements 接口 { 重写接口中方法 }   在类实现接口后,该类就会将接口中的抽象方法继承过来

抽象类和接口

荒凉一梦 提交于 2020-02-27 08:41:17
抽象类 在Java中,你可以只给出方法的定义不去实现方法的具体事物,由子类去根据具体需求来具体实现。这种只给出方法定义而不具体实现的方法被称为 抽象方法 ,包含一个或多个抽象方法的类称为 抽象类 。 举个例子来说:一个图形类应该有面积的方法,但是不同的图形求面积方法不一样。分析事物,发现共性,就出现了向上抽取。 方法的声名相同,但是方法功能主体不同,这样就可以抽取,但只是抽取方法声名,但不抽取方法主体,称这个方法就是抽象方法。 方法前加上 abstract 关键字, 表示这是一个抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。 包含抽象方法的类, 必须加上 abstract 关键字表示这是一个抽象类. //有抽象方法的类也必须被声明为abstract abstract class Shape { //抽象方法,不能有“{}” abstract public void draw ( ) ; } 抽象类不能直接实例化. 抽象方法不能是 private 的 抽象类中可以包含其他的非抽象方法, 也可以包含字段. 这个非抽象方法和普通方法的规则都是一样的, 可以被重写,也可以被子类直接调用 //抽象类 abstract class People { //抽象方法 public abstract void work ( ) ; } class Doctor extends

设计模式实战---抽象工厂模式(Abstract-Factory-Pattern)

蓝咒 提交于 2020-02-27 08:40:37
0 导读 工厂方法模式人是造出来了,可都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,忘记给人类定义性别了,那怎么办? 从头开始建立所有的事物也是不可能的,那就想在现有的条件下重新造人,尽可能旧物利用嘛 人种(Product产品类)应该怎么改造呢?怎么才能让人类有爱有恨呢?定义互斥的性别,然后在每个个体中埋下一颗种子:异性相吸,成熟后就一定会去找个异性 从设计角度来看,一个具体的对象通过两个坐标就可以确定:肤色和性别 产品类分析完,生产的工厂类(八卦炉)该怎么改造呢? 只有一个生产设备,要么生产出来的全都是男性,要么都是女性,何以解忧? 把目前已经有的生产设备—八卦炉拆开,于是女娲就使用了“八卦复制术”,把原先的八卦炉一个变两个,并且略加修改,就成了女性八卦炉(只生产女性人种)和男性八卦炉(只生产男性人种),于是就开始准备生产 一个接口,多个抽象类,然后是N个实现类,每个人种都是一个抽象类,性别是在各个实现类中实现的 特别需要说明的是 HumanFactory 接口,在这个接口中定义了三个方法,分别用来生产三个不同肤色的人种,也就是我们在坐标图的Y坐标,它的两个实现类分别是性别,也就是坐标图的X坐标 通过X坐标(性别)和Y坐标(肤色)唯一确定了一个生产出来的对象 Human接口如代码 人种有三个抽象类,负责人种的抽象属性定义 肤色和语言,白色人种、黑色人种

浅谈面向对象特征

血红的双手。 提交于 2020-02-27 05:53:32
所有的面相对象思想,归根结底是为了简化代码,减少代码量,构建更符合现实生活逻辑的程序代码,从而减轻程序员的负担。不能一味地或者说刻意地去使用面相对象的思想而忽略了程序所实现的功能或者框架,要根据实际情况 众所周知,面向对象编程的特点为:封装、继承、多态。C#是一门完全面向对象的语言,由于比Java推出的时间还要晚,所以对面向对象的思想的体现比Java还要完美,那么在C#中如何体现封装、继承和多态呢?下面举例并进行说明。 1.封装 封装的好处有以下几点: ①数据不外泄,可以做到一定的保护 ②类的使用者不用考虑具体的数据运算,方便 ③程序结构性强,层次清晰,便于维护 对相关的字段、方法进行封装固然对面向对象编程起到不可缺少的重要作用,但并不代表不可以访问类或者说具体的实例化对象中的内容,而且为使用者提供接口,仅仅让他们调用就可以了,他们只做他们的工作,不需要考虑或者顾及你写的类具体是做什么的,更不用考虑你写的每一行代码是什么意思。 在C#中,对于变量的封装,往往将需要被在本类以外调用的,以属性的形式出现,而不像C++中是直接以public成员或者private成员加上相关的方法调用,那样要么不符合面向对象的特点,要么太麻烦。 C#中属性的声明: 代码如下: public class TestClass { public string Info { get; set; } }

Java 中接口和抽象类的区别?

眉间皱痕 提交于 2020-02-27 01:43:28
抽象类 如果一个类含有抽象方法,那么这个类是抽象类。 抽象类用 abstract 修饰。 抽象类可以没有抽象方法。 抽象方法必须被 public 或 protected 修饰。如果被 private 修饰,则方法不能被子类继承。默认情况下为 public 。 如果一个类继承了抽象类,那么需要实现抽象类中的所有抽象方法。如果没有实现所有抽象方法,那么该子类也被定义为抽象类。 因为含有抽象方法,没有具体实现的方法,所以抽象类不能实例化对象。 接口 接口中的所有方法必须都是抽象方法。(Java8 可以有默认方法实现) 接口用 interface 修饰。 接口中的变量被隐式指定为 public static final 变量,并且也只能被 public static final 修饰,如果被 private 、 protected 修饰会报编译错误。 接口中的方法被隐式指定为 public abstract 方法,并且也只能被 public abstract 修饰。如果被 private 、 protected 、 final 、 static 等修饰会报编译错误。 接口与抽象类的区别 抽象类被继承,且只能单继承;接口被实现,可以实现多个接口。 抽象类中,可以有自己的变量,也可以有非抽象的方法;接口中的变量必须是 public static final 修饰,所有成员方法必须都是抽象的。

抽象方法

早过忘川 提交于 2020-02-26 19:15:46
抽象方法:父类当中的方法,不确定如何进行 {} 方法体实现,那么这就是一个抽象方法 例如:动物类:叫{} // 叫方法就是抽象方法,不确定以何种声音叫 格式: 抽象方法:加上 abstract 关键字,然后去掉大括号,直接分号结束; 抽象类:抽象方法所在的类,必须是抽象类, 在 class 之前加上 abstract 即可 抽象类中可有抽象方法和成员方法 例如: public abstract class Animals { public abstract void eat(); public void method(){} } 抽象类和抽象方法的使用: 1.不能直接 new 抽象类对象 2.必须用一个子类来继承抽象父类 3.子类必须重写抽象父类的全部抽象方法 重写时:去掉 abstract ,补上方法体大括号 4.创建子类对象进行使用 若抽象类的子类也是抽象类,则可以不必重写所有方法 来源: https://www.cnblogs.com/aoligei/p/12367849.html

类与对象的使用 总结笔记

流过昼夜 提交于 2020-02-26 13:13:08
1.创建对象 class IT{ IT() { System.out.println("JAVA"); } } public class A { public static void main(String[] args){ new IT();//创建了一个匿名对象 } } 运行结果: JAVA 注意 :new一下对象就在内存的堆区被创建了,并不需要用变量接收,在对象需要重复使用时需要用类变量接收。 2.抽象类 public abstract class A {\\成员数据 \\抽象方法区 public abstract void a() { } \\方法区 } 抽象类的最大规则是一个抽象类必须有一个抽象方法! 来源: https://www.cnblogs.com/weiyi2020/p/12366376.html

关于抽象类及抽象方法

此生再无相见时 提交于 2020-02-25 23:28:32
abstract 修饰的类叫做抽象类 ,abstract修饰的方法叫抽象方法 一 、抽象类 抽象类不够具体、不够完整、不该独立存在; 抽象类能够被继承,为子类提供共性和方法; 可作引用被声明,强制使用多态; 二、抽象方法 抽象方法只能定义在抽象类中 抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类 子类继承之后必须进行覆盖,否则子类亦为抽象类 使用抽象方法时访问修饰词只能是protected 或者为 public 例如: public abstract void m(); 或者 protected abstract void m(); 注意:抽象方法中不能有final和static 来源: CSDN 作者: man_OR_boy 链接: https://blog.csdn.net/man_OR_boy/article/details/104505160