一、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导出sql语句结果到Excel

    本文档是因为每周需要统计线上数据库中客户新增资源,手动执行实在是麻烦,就写了个脚本导出到Excel,顺便发一封邮件. (当然这不是线上的真实脚本,不过根据个人需求稍微修改下,还是可以直接用的.拿去不谢 ...

  2. 第一天docker入门

    [01 入门] docker 最核心为三部分组成 镜像,仓库和容器 镜像:一个只读的模板 仓库:代码仓库,镜像的集合 容器:镜像的实例化进程 我们可以这样理解 容器就是一个沙箱,docker利用容器运 ...

  3. Python全栈工程师 (类变量、方法、继承、覆盖)

    ParisGabriel                每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图 Python人工智能从入门到精通 补充: 实例方法都是操作实例对象 ...

  4. 孤荷凌寒自学python第十六天python的迭代对象

    孤荷凌寒自学python第十六天python的迭代对象 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 迭代也就是循环. python中的迭代对象有相关的如下几个术语: A容器 contrai ...

  5. sublime3 Package Control和 中文安装

    sublime3中文版需要使用PackageControl,所以首先需要安装PackageControl 一.PackageControl安装: 1.点击Preferences > Browse ...

  6. Android记事本开发04

    昨天: 显式intent 隐身intent 今天: intentFilter 问题: 无法直接预览布局文件的效果.

  7. NYOJ36 水池数目

    水池数目 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地 ...

  8. 201621123033 《Java程序设计》第6周学习总结

    第六次作业 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 ...

  9. margin-top影响父元素定位

    写样式时无意中发现margin-top会影响到父元素的定位,下面是示例: HTML代码: <div class="demo"> <div class=" ...

  10. 熊猫(i)

    题目描述 熊猫喜欢吃数,熊猫对与每个数都有他独特的评价.具体来说,熊猫对数 xx 的评价是个四元组 (a, b, c, d)(a,b,c,d),计算方式如下: 首先将 xx 写成二进制形式(不含前导零 ...