一、final

final的中文意思就是不可更改的,最终的。

1.final修饰变量,那么该变量无法更改。一旦该变量赋了初值,就不能重新赋值。

 final MAX = 1100;
//final修饰后MAX就无法重新赋值。

2.final修饰方法

final修饰方法,那么该方法不能被子类重写,但可以重载。

 class Person{
final void getName(){.....}
} //getName()方法,无法被子类重写。

3.final修饰类

final修饰类,该类无法被继承。

二、抽象类

首先什么是抽象类,简而言之就是包含了抽象方法的类。

那什么又是抽象方法了,就是只有声明部分,但没有方法体。

完整的方法应该是

 void getName()  //方法声明
{ //方法体
System.out.println("i am hcf");
}
而抽象方法是没有方法体的,abstract void getName();

抽象方法前面必须加abstra修饰,拥有抽象方法的类称为抽象类,那么抽象类前面要加上abstract修饰。

 abstract class  Person{
abstract void getName();
}

下面简述抽象类的几个要点:

1.有抽象方法的类只能定义为抽象类,不然会出现错误。

 abstract class  Person{            //定义为抽象类,那么必须包含抽象方法。
abstract void getName(); //有抽象方法,必定为抽象类
}

2.抽象类不能用new创建对象,即使你在抽象类里面添加构造方法也不行。

public class TestAbstract {
public static void main(String[] args) {
/* Person stu = new Person(); */ //Person是抽象类,无法实例化
}
} abstract class Person{
abstract void getName();
public void Person(){ //即使添加了构造方法也无法实例化。
} //只要是抽象类,就无法实例化。
}

3.抽象类中可以包含一般的方法或属性,但只能被子类调用。

 public class TestAbstract {
public static void main(String[] args) {
Student stu = new Student();
stu.getName();
stu.out(); //抽象类中的其他方法可以通过子类来调用
}
} abstract class Person{
abstract void getName();
void out(){ //抽象类中包含的其他方法
System.out.println("1132");
}
} class Student extends Person{
public void getName(){
System.out.println("i am hcf");
}
}
运行结果:
i am hcf
1123

4.抽象类只能被继承。

5.子类必须实现抽象类中的抽象方法。

abstract class  Person{
abstract void getName();
void out(){
System.out.println("1132");
}
} class Student extends Person{
public void getName(){ //子类必须实现抽象方法,否则会报错。
System.out.println("i am hcf");
}
}

到这里大家可能会问,这抽象类有什么好处,为什么要用它?

抽象类就相当于模板,子类必须遵守这个模板。

因为子类必须实现抽象类中的方法,这样可以做到设计和实现分离。

设计人员只需要定义好方法,返回值等,开发人员实现这些方法即可。

三、接口

接口比抽象类还要抽象,接口只能包含方法声明和常量。

接口说明:

1.接口只能用public 或default修饰,public修饰的接口名称必须和文件名相同(这点和public类相似)。

 public interface Fly{
void flyStyle();
} interface attack{
int attackRange(String arms);
}

2.一个文件中只能有一个被public修饰的接口。

3.接口可以多继承

public interface Fly{
void flyStyle();
} interface Attack{
int attackRange(String arms);
} interface FlyArms extends Fly, Attack{ //飞行武器(FiyArams)就继承了Fly(飞行)接口和attack(攻击)接口 }

4.接口中常量默加上public static final,写于不写都一样。

 interface Fly{
int MIN_HIGHT = 1; //相当于public static final int MIN_HIGHT = 1;
void flyStyle(); //相当于public abstract void flyStyle();
}

5.接口中的方法默认加上public abstract,写于不写都一样。

接口要点:

1.接口不可被类继承,只能被类实现(implements)。

2.接口中的方法必须实现,且方法必为public。

 public interface Fly{
void flyStyle();
} interface Attack{
int attackRange(String arms);
} class implements Fly{ //接口只能被实现(implements)
public void flyStyle(){ //类实现接口必须实现接口中定义好的方法。
System.out.println("飞飞飞!");
}
}

3.接口不能创建实例,但可以声明引用变量类型。

 public class FramPaint {
public static void drawFram(MyPaint p){ //(Mypaint p) 接口声明引用变量类型
System.out.println("启动线程"); //有点像之前的多态父类声明引用子类对象。
System.out.println("增加循环"); //这个还涉及到后面的回调函数,其实就是多态。
System.out.println("查看消息");
p.paint();
System.out.println("启动缓存"); }
public static void main(String[] args) {
FramPaint.drawFram(new GameFarm()); //调用静态方法可以直接类名加方法调用,
} //静态方法中只能调用静态方法。 } interface MyPaint {
void paint();
} class GameFarm implements MyPaint{
@Override
public void paint() {
System.out.println("GameFarm");
}
}

下面还有一个小例子,用于理解

 public class Test {
public static void main(String[] args){
FireArms fa = new FireArms();
fa.flyStyle();
System.out.println("攻击距离:"+fa.attackRange(fa.name));
}
} interface Fly{
void flyStyle();
} interface Attack{
int attackRange(String arms);
} interface FlyArms extends Fly, Attack{} class FireArms implements FlyArms{
String name = "FireArms";
public void flyStyle(){
System.out.println("扣动扳机飞行");
}
public int attackRange(String arms){
int range = 0;
switch(arms){
case "FireArms": range = 800;
break;
default:System.out.println("未知");
break;
}
return range;
}
}

1.13抽象类及接口(附简述final关键字)的更多相关文章

  1. Java程序设计8——抽象类、接口与内部类

    1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由 ...

  2. LY.JAVA面向对象编程.final、多态、抽象类、接口

    2018-07-08    13:47:26 final关键字 多态 从右向前念 多态的成员访问特点及转型的理解 多态的问题理解: class 孔子爹 { public int age = 40; p ...

  3. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  4. 抽象类和接口 static final finalize

    抽象类 任何含有一个或多个抽象方法的类都必须声明成抽象类,用关键字abstract. 抽象类没有对象,即一个抽象类不能用new来直接实例化. 不能定义抽象构造方法或抽象静态方法.(但是可以创建父类引用 ...

  5. JAVA:类的三大特征,抽象类,接口,final关键字<3>

    一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...

  6. Java学习第三篇:类的三大特征,抽象类,接口,final关键字

    一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...

  7. final、抽象类、接口、多态、

       final———最终.作为一个修饰符 可以修饰类. 函数. 变量: 被final修饰的类不可以被继承: 被final修饰的方法不可以被重写: 被final修饰的变量只能够被赋值一次,既可以修饰成 ...

  8. final修饰符,多态,抽象类,接口

    1:final关键字(掌握)    (1)是最终的意思,可以修饰类,方法,变量.    (2)特点:        A:它修饰的类,不能被继承.        B:它修饰的方法,不能被重写.      ...

  9. java详解final、多态、抽象类、接口原理

    1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: ...

随机推荐

  1. Python学习-前台开发-JavaScript、Dom和jQuery

    JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. ...

  2. JS 如何获取radio或者checkbox选中后的值

    废话不多说,直接上代码: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. 孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化

    孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...

  4. Leetcode 671.二叉树中第二小的节点

    二叉树中第二小的节点 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树 ...

  5. SQL 基础笔记(一)

    本笔记整理自<SQL 基础教程>.<MySQL 必知必会>和网上资料.个人笔记不保证正确. 一.基础 SQL,即结构化查询语言,是为访问与操作关系数据库中的数据而设计的语言. ...

  6. linux备忘录-档案与文件系统的压缩与打包

    知识点 文件扩展名与压缩解压缩工具 .Z -> compress程序压缩的档案 .gz -> gzip程序压缩的档案 .bz2 -> bzip2程序压缩的档案 .tar -> ...

  7. cmd中神奇的命令 prompt $g

    万万没想到还可以这么玩 将java文件编译为class以后可以这样直接运行 java A<1.txt 就相当于把1.txt中的内容以模拟输入的方式输入到java中 java A>1.txt ...

  8. Learn the shell

    learn the shell what is the shell? when we speak of the command line,we are really to the shell.Actu ...

  9. PHP实现图片上传并压缩

    本文实例讲解了PHP图片上传并压缩的实现方法,分享给大家供大家参考,具体内容如下 使用到三个文件 connect.php:连接数据库 test_upload.php:执行SQL语句 upload_im ...

  10. RabbitMQ磁盘警报

    RabbitMQ磁盘警报 当可用磁盘空间低于配置的限制(默认为50MB)时,将触发警报,所有生产者将被阻止.目标是避免填满整个磁盘,这将导致节点上的所有写操作失败,并可能导致RabbitMQ终止.为了 ...