抽象方法

【java基础】第10天――继承、抽象类

匿名 (未验证) 提交于 2019-12-02 21:53:52
今日内容介绍 1、继承 2、抽象类 3、综合案例―员工类系列定义 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类, 构建出来的新类被称作子类,现有类被称作父类 *B:继承关系的子类特点 *a:子类会自动拥有父类所有非private修饰的属性和方法 *A:继承的格式 class 子类 extends 父类 {} *B:雇员(Employee)与研发部员工(Developer)案例: *cn.itcast.demo01包下: *Employee.java: /* * 定义员工类Employee */ class Employee { String name; // 定义name属性 public void work() {// 定义员工的工作方法 System.out.println("尽心尽力地工作"); } } *Developer.java: /* * 定义研发部员工类Developer 继承 员工类Employee * 继承了父类中所有非private修饰的成员变量 */ class Developer extends Employee { // 定义一个打印name的方法 public void printName() { System.out

java 类的重用――抽象类

匿名 (未验证) 提交于 2019-12-02 21:53:52
为什么要申明抽象类? 抽象类是类层次中较高的概括, 抽象类的作用是让其他类来继承它的抽象抽象化的特征 抽象类中包括可以被它的所有子类共享的公共行为、公共属性 不能用抽象类作为模版来创建对象。 在用户生产实例时强迫用户生成跟具体的实例,保证代码的安全性。 1.所谓抽象类就是不能通过new方法进行实例化的类,即没有具体实例对象的类。 2. 作为类修饰符 ,abstract 声明一种没有具体对象的,出于组织概念的层次关系需要而存在的抽象类。 作为类方法修饰符,abstract则申明了一种仅有方法头,而没有集体的方法体和实现操作 的 抽象方法 一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽象方法书写方法体,即重写父类中的所有抽象方法; 只有抽象类才能有抽象方法,即一个类中含有抽象方法,那么这个类必须是抽象类; 除了抽象方法,抽象类中还可以包括非抽象方法; 优点: 这种方法可以隐藏具体的细节信息,是调用该方法的程序不必过分关注该类和它的各个子类的内部状况。由于所有的子类使用的都是相同的方法头,而方法头里实际包含了该调用方法的程序语句所需要了解的全部信息。 这种方法强迫子类完成指定的行为,抽象类的所有非抽象子类都必须完成其父类中声明的抽象方法,抽象类通常申明抽象方法规定其子类需要用到的”标准“行为。 文章来源: java 类的重用――抽象类

Java基础之final和abstract关键字

匿名 (未验证) 提交于 2019-12-02 21:53:52
final final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。 修饰变量 (例如Math类的PI=3.1415926就是变量不可修改) 用final关键字修饰的成员(实例)变量或局部变量统称为final变量。final变量经常和static关键字一起使用,作为常量。用final关键字修饰的变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改(只读类型);如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 修饰方法 final关键字可以修饰方法,代表这个方法不可以被子类的方法重写(覆盖)。如果你认为一个方法的功能已经足够完整了,继承它的类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。 关于private和final关键字还有一点联系,这就是类中所有的private方法都隐式地指定为是final的,由于无法在类外使用private方法,所以也就无法覆盖它。 修饰类 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰

Java第二阶段笔记

匿名 (未验证) 提交于 2019-12-02 21:52:03
抽象类不能创建对象 抽象类可以有构造方法 成员变量 成员方法 静态方法 final修饰的方法(只能被子类调用,不能被重写) 抽象方法(可以有0个或多个) 抽象方法不能有方法体,只能以;结尾,只能存在于抽象方法中 抽象方法必须被子类实现,如果子类不能实现父类的抽象方法,那么子类也必须是抽象类 接口,用interface修饰,是一种引用数据类型 可以包含 抽象方法(public abstract)可省略 非抽象方法(加default关键字) 属性 常量(public static final)可省略 不可以有构造方法,因为接口不是类 接口与类的关系 1,类可以实现接口的方法,用implements关键字(实现关系,必须实现接口中所有的抽象方法) 2,一个类存在继承关系,又存在实现关系时,extends关键字在前;如果父类与接口中有完全相同的方法,子类/实现类,实现的是父类的方法;如果父类和接口中有重名方法,要求两个方法要构成方法的重载 Java第二阶段之数组深化 数组复制 for (int[] arr:c) { for (int i :arr) { System.out.print(i+"\t"); } } 数组内容的增删本质上也是数组的复制 array工具类 Arrays.toString(a);打印数组 Arrays.sort(a);排序 Arrays.binaySeach(a

java中的抽象类和抽象方法

匿名 (未验证) 提交于 2019-12-02 21:52:03
一、当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。 例如,定义了“动物”父类,其中“动物名称”和“动物年龄”属性已经明确了,但是“动物叫”的方法没有明确,此时就可以将“动物叫”定义为抽象方法。 所以,抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。 // 这就是一个抽象类 abstract class Animal { String name ; int age ; // 动物会叫 public abstract void cry (); // 不确定动物怎么叫的。定义成抽象方法,来解决父类方法的不确定性。抽象方法在父类中不能实现,所以没有函数体。但在后续在继承时,要具体实现此方法。 } // 抽象类可以被继承 // 当继承的父类是抽象类时,需要将抽象类中的所有抽象方法全部实现。 class cat extends Animal { // 实现父类的cry抽象方法 public void cry () { System . out . println ( "猫叫:" ); } 二、用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。 三、抽象方法不能有方法主体。格式如下: abstract void xxx (); 四

java8 lambda 表达式详解

匿名 (未验证) 提交于 2019-12-02 21:52:03
lambada 表达式实质上是一个匿名方法,但该方法并非独立执行,而是用于 实现由函数式接口定义的唯一抽象方法 使用 lambda 表达式时,会创建实现了函数式接口的一个匿名类实例 可以将 lambda 表达式视为一个对象,可以将其作为参数传递 1. 函数式接口 函数式接口是仅含一个抽象方法的接口,但可以指定 Object 定义的任何公有方法。 以下是一个函数式接口: 1 @FunctionalInterface 2 public interface IFuntionSum<T extends Number> { 3 T sum(List<T> numbers); // 抽象方法 4 } 以下也是一个函数式接口: 1 @FunctionalInterface 2 public interface IFunctionMulti<T extends Number> { 3 void multi(List<T> numbers); // 抽象方法 4 5 boolean equals(Object obj); // Object中的方法 6 } 但如果改为以下形式,则不是函数式接口: 1 @FunctionalInterface 2 public interface IFunctionMulti<T extends Number> extends IFuntionSum<T> { 3

java基础面试题(一)

匿名 (未验证) 提交于 2019-12-02 21:52:03
1.java中的数据类型,各占多少个字节?       2.面向对象的特性   1-封装:简单来说,封装就是把数据和操作数据的方法绑定起来,如果需要访问,可以使用已定义的接口进行访问   2-继承:从已有的类得到继承信息创建新的类的过程。提供继承信息的类称为父类(也叫超类,基类);得到继承信息的类称为子类(也叫派生类)   3-多态:允许不同的子类对同一消息做出不同的响应,也就是父类的引用指向子类的对象。而多态性又分为编译时多态和运行时多态。方法重载实现的是编译时多态(前绑定),方法重写实现的是运行时多态(后绑定)。实现多态的两件事:第一就是方法的重写(子类继承父类并重写父类中已有的和抽象方法);第二就是对象造型(父类的引用指向子类的对象)   4-抽象:将一类对象的共同特征总结出来构造类的过程。包括数据抽象和行为抽象。抽象只关注对象有哪些行为和属性,对于行为的细节并不关注 ***注意:对象的特性默认情况下有3种,封装,继承,多态。如果面试官说了四种,那就加上抽象 3.访问权限修饰符public,protected,private,default(默认)的区别即访问范围 4. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?   答:第一个是错的,因为1是int类型的,而s1+1的运算结果也是int类型的,需要强转

浅析Vue源码(九)——VirtualDOM与path

六眼飞鱼酱① 提交于 2019-12-02 21:48:32
本文转载于: 猿2048 网站➥ https://www.mk2048.com/blog/blog.php?id=kj12h222j 今天来讲讲VirtualDom与path之间到底存在什么关系? VNode (VirtualDom) 在未出现双向绑定之前,我们需要在各个触发事件方法中直接操作DOM节点来达到修改相应视图的目的。但是当应用一大就会变得难以维护,reflow(回流)很影响性能的。 因此就有人提出来,那我们是不是可以把真实DOM树抽象成一棵以JavaScript对象构成的抽象树,在修改抽象树数据后将抽象树转化成真实DOM重绘到页面上呢?于是虚拟DOM出现了,它是真实DOM的一层抽象,用属性描述真实DOM的各个特性。当它发生变化的时候,就会去修改视图。 可以想象,如果用最简单粗暴的方法将整个DOM结构用innerHTML修改到页面上,那么这样进行重绘整个视图层是相当消耗性能的,那是不是可以考虑每次只更新它修改的部分呢?所以Vue.js将DOM抽象成一个以JavaScript对象为节点的虚拟DOM树,以VNode节点模拟真实DOM,可以对这颗抽象树进行创建节点、删除节点以及修改节点等操作,在这过程中都不需要操作真实DOM,只需要操作JavaScript对象后只对差异修改,相对于整块的innerHTML的粗暴式修改,大大提升了性能

Java中的abstract

匿名 (未验证) 提交于 2019-12-02 21:35:18
抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。 抽象类:1.可以扩展(增加子类),但不能直接实例化。2.抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面 所有的 抽象方法,否则,此类也是抽象类。 抽象方法:抽象方法不能有方法主体;不在声明它的类中实现,但必须在某个子类中重写。 抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法 abstract 关键字不能应用于 static、private 或 final 方法,因为这些方法不能被重写,因此,不能在子类中实现。 文章来源: https://blog.csdn.net/qq_38654591/article/details/90301189

java SE理论

匿名 (未验证) 提交于 2019-12-02 20:48:41
Java入门 变量 运算符 Java的基本知识 这部分自行百度,百度百科会有详细解释,了解java语言的特点, JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 jre:java的运行环境 。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。 jvm:java虚拟机,计算机设备的规范,是一个虚构出来的计算机 jcp: 是一个开放的国际组织,由Java开发者以及被授权者 发展和更新 api:应用程序的编程接口 预先定义的函数 提供应用程序与开发人员基于某软件或硬件访问数据的能力,而又无需访问源码;无需了解内部工作细节 oop:Object Oriented Programming 面向对象编程 ooa:Object-Oriented Analysis 面向对象分析方法 ood: Object-Oriented Desig 面向对象设计 其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。 Java 特点面向对象 简单 分布式 健壮性 安全 可移植 多线程 动态性 编译和解释性 高性能 Java的变量 Java的变量,java中的变量主要包括8种,byte short int long char double float Boolean 相关的封装类型 长度及范围如下: 数据类型