抽象类

Java面向对象浅谈

允我心安 提交于 2020-01-16 08:29:54
1. 方法重写override: 参数列表必须完全与被重写方法的相同; 返回类型必须完全与被重写方法的返回类型相同; 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。 父类的成员方法只能被它的子类重写。 声明为final的方法不能被重写。 声明为static的方法不能被重写,但是能够被再次声明。 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。 构造方法不能被重写。 如果不能继承一个方法,则不能重写这个方法. 2.重载overload: 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。 最常用的地方就是构造器的重载。 重载规则 被重载的方法必须改变参数列表(参数个数或类型或顺序不一样); 被重载的方法可以改变返回类型; 被重载的方法可以改变访问修饰符

抽象类

萝らか妹 提交于 2020-01-16 04:38:21
一、抽象类-产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体。 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。比如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样。那该怎么办呢? 分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是 方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。 描述JavaEE工程师:行为:工作。 描述Android工程师:行为:工作。 JavaEE工程师和Android工程师之间有共性,可以进行向上抽取。抽取它们的所属共性类型:研发部员工。由于JavaEE工程师和Android工程师都具有工作功能,但是他们具体工作内容却不一样。这时在描述研发部员工时,发现了有些功能(工作)不具体,这些不具体的功能,需要在类中标识出来,通过java中的关键字abstract(抽象)。 当定义了抽象方法的类也必须被 abstract 关键字修饰,被 abstract 关键字修饰的类是抽象类。 二、抽象类&抽象方法的定义 抽象方法定义的格式: public abstract 返回值类型 方法名 ( 参数 ); 抽象类定义的格式: abstract

接口和抽象类的区别(全面)

别来无恙 提交于 2020-01-16 02:30:08
抽象类 接口 默认的方法实现 可以有默认的方法实现 jdk1.8之前不能有默认方法实现,jdk1.8开始支持用default进行默认方法的实现,这个默认实现方法并不强迫实现类去实现 实现 子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,那么子类要实现抽象类中的所有声明的方法 子类通过implements来实现接口,子类需要实现接口中所有声明的方法 构造器 可以有 不可以有 与正常java类的区别 除了不能实例化抽象类外,和普通java类没什么区别 接口是完全不同的类型 main方法 可以有main方法,并且可以运行 不可以有main方法 多继承 可以继承一个类和实现多个接口 只可以“继承”一个或多个其他接口 默认修饰符 参考下边默认访问权限 方法:public abstract ; 属性:public static final 默认访问权限 JDK 1.8以前,抽象类的方法默认访问权限为protected(可以是public和protected),JDK 1.8时,抽象类的方法默认访问权限变为default(可以是public和protected或者不写) JDK 1.8以前,接口中的方法默认,也必须是public的(只能用public),JDK 1.8时,接口中的方法默认public的,也可以是default的(可以是public和default),JDK 1

Java 修饰符

强颜欢笑 提交于 2020-01-16 01:19:22
Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明: public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; public static void main(String[] arguments) { // 方法体 } 访问控制修饰符 Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。 默认的,也称为default,在同一包内可见,不使用任何修饰符。 私有的,以private修饰符指定,在同一类内可见。 共有的,以public修饰符指定,对所有类可见。 受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。 默认访问修饰符-不使用任何关键字 使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。 实例: 如下例所示,变量和方法的声明可以不使用任何修饰符。 String

JAVA匿名内部类

做~自己de王妃 提交于 2020-01-15 23:09:53
匿名内部类是一种特殊的局部内部类,这种内部类没有类名。适用于只使用一次并且不需要多次创建对象的类。使用匿名内部类可以使类代码与创建对象同时完成,提高代码的可维护性与灵活性。 package JAVA_Project_01_05 ; //匿名内部类是一种特殊的局部内部类,这种内部类没有类名。适用于只使用一次并且不需要多次创建对象的类。使用匿名内部类可以使类代码与创建对象同时完成,提高代码的可维护性与灵活性。 //使用匿名内部类的技术要点如下: // //· 匿名内部类的语法格式:“new实现的接口名或继承的类名(){};”。 // //· 匿名内部类是惟一一种没有构造方法的类。所以匿名内部类的使用范围有限。大部分匿名内部类用于接口的回调。 // //· 匿名内部类在编译时由系统自动起名为Out$1.class。 // //· 匿名内部类用于继承其他类或实现接口,并不需要增加额外的方法,只是对继承方法的实现与重写。 interface AnonymityInter { //定义一个接口 public void method ( ) ; } abstract class AnonymityAbstract { //定义一个抽象类 int count ; abstract void method ( ) ; } class AnonymityClass { //定义一个类 public

Java2019最新面试题

落爺英雄遲暮 提交于 2020-01-15 17:19:38
2019最新整理JAVA面试题附答案 作者:Jack 包含的模块: 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM 如下图所示: 共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单 ==================================================== 一. Java 基础模块 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。 2.== 和 equals 的区别是什么

java 抽象类和接口

╄→尐↘猪︶ㄣ 提交于 2020-01-15 12:40:30
抽像类 定义:在class前面加上abstract就是一个抽象类 抽象类特点: 1.抽象方法所在类必须是是抽象类,抽象类不一定有抽象方法 抽象方法特点:只有方法定义没有方法体 2.抽象类不能实例化(即不能new 抽象类名() 但是可以定义这种类型变量实现多态)因为抽象类本身就是一个抽象的 3.如果想实现抽象类必须创建子类去继承它 4.子类继承一个抽象类,子类必须重写抽象类中所有抽象方法(子类也是抽象类除外) 5.抽象类中可以定义普通方法 6.抽象类中有构造方法 接口 定义 :就是多个类之间的公共规范 接口里面的方法都是抽象方法是一个特殊的抽象类 怎么定义一个接口 public interface 接口名{ } 接口特点 1.接口里面的成员变量都是常量,默认会被"public static final" 也就是我定义的方法不加public static final 默认也会加上 2.接口里面的方法默认会被public abstract 修饰,也就是我定义的方法不加public abstract默认也会加上 3.接口不能实例化,抽象类是继承,接口是用来实现的implements 4.一个类实现了接口,要实现这个接口里面的所有抽象方法 5.一个类可以实现多个接口 6.接口可以继承接口,并可以继承多个接口 接口和抽象类区别?(重点) 1.接口里面不能定义普通方法里面都是抽象方法 2

Java——修饰符详解

╄→гoц情女王★ 提交于 2020-01-15 11:38:55
Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明: 实例: public class className { // ... } private boolean myFlag ; static final double weeks = 9.5 ; protected static final int BOXWIDTH = 42 ; public static void main ( String [ ] arguments ) { // 方法体 } 访问控制修饰符 Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。 默认的,也称为 default,在同一包内可见,不使用任何修饰符。 私有的,以 private 修饰符指定,在同一类内可见。 共有的,以 public 修饰符指定,对所有类可见。 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。 我们可以可以通过以下表来说明访问权限: 修饰符 当前类 同一包内 子孙类 其他包 public Y Y Y Y protected Y Y Y N default Y Y N N private Y N N N 默认访问修饰符-不使用任何关键字

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 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象