网站首页 > 精选教程 正文
abstract:
前面章节我们详细讲解了抽象类和接口,本章节我们就abstract关键字进行详细讲解,abstract(抽象)修饰符,可以修饰类和方法,修饰不同内容时分别怎么使用呢?
1.abstract修饰类:
abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以作为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
package cn.hz;
/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public abstract class Person {
private String name; //属性:姓名
//非抽象方法
public void show(){
System.out.println("人的信息"+name);
}
}
注意:abstract修饰符在修饰类时必须放在类名前。
2.abstract修饰方法:
abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖),如抽象方法在抽象类中的使用代码如下:
package cn.hz;
/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public abstract class Person {
private String name; //属性:姓名
//非抽象方法
public void show(){
System.out.println("人的信息"+name);
}
//抽象方法
public abstract void eat();
}
注意:在抽象类中的抽象方法的abstract是不能省略的,但是在接口中的抽象方法abstract是可以省略的。
抽象方法在接口中的使用代码如下:
package cn.hz;
/**
* @author hz
* @version 1.0
*
* 定义Person的数据访问层接口
*/
public abstract interface PersonDao {
public abstract Person find();
public abstract void add();
public abstract void update();
public abstract void delete();
}
接口中的方法只能是抽象方法,所以我们在实际编写接口时会直接将接口处和方法处的abstract省略,代码如下:
package cn.hz;
/**
* @author hz
* @version 1.0
*
* 定义Person的数据访问层接口
*/
public interface PersonDao {
public Person find();
public void add();
public void update();
public void delete();
}
小结:
- 一个类如果是抽象类,可以含有抽象方法也可以含有非抽象方法,但是如果一个类中含有抽象方法,则该类一定是抽象类。
- 抽象方法可以位于接口和抽象类中,但是需要被非抽象子类或其实现类实现
final:
abstract为抽象的,在java中有些场合需要类,方法,变量等不允许改变,如何处理呢?java提供了关键字final用于限定内容不再改变。
1.final修饰类:
当final用于修饰一个类时,该类成为最终类,无法被继承,代码如下:
package cn.hz;
/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public final class Person {
private String name; //属性:姓名
//非抽象方法
public void show(){
System.out.println("人的信息"+name);
}
}
该类不允许被继承,其他同普通类使用一致,在java中如String类,Integer类等类都是被final修饰的,不允许继承,大家使用时一定要注意。
2.final修饰方法:
被final修饰的方法一定是非抽象方法,该方法不允许被重写,但是该方法可以被继承
package cn.hz;
/**
* @author hz
* @version 1.0
*定义一个抽象类:Person
*/
public class Person {
private String name; //属性:姓名
//该方法不允许被重写
public final void show(){
System.out.println("人的信息"+name);
}
}
注意:final修饰方法和类互不影响。
3.常量:
fianl修饰一个变量时,则该变量成为常量,后续使用中不允许再做改变,并且常量需要在定义时直接赋值,代码如下:
package cn.hz;
/**
* @author hz
* @version 1.0
*定义一个常量
*/
public class Person {
public final String NAME="无名氏"; //属性:姓名
}
常量命名一般为全部大写,在实际开发中如圆周率PI一般定义为常量。
小结:
- 被final修饰的类不能被继承,被final修饰的方法不能被重写,被final修饰的变量为常量不能再改变。
至此常见的关键字就说到这里!
猜你喜欢
- 2024-10-30 java 你用了这么久,真的明白static和final的区别么?
- 2024-10-30 「java面试_01」String类为什么是final
- 2024-10-30 Java编程思想:final 关键字 java中finally关键字
- 2024-10-30 Java八股文:final、finally、finalize之间有什么区别
- 2024-10-30 在java中String类为什么要设计成final?Java面试常见问题
- 2024-10-30 lambda中的外部局部变量为什么需要声明final?
- 2024-10-30 java笔记static和final用法 java static与final
- 2024-10-30 Java中为什么String类被定义成final
- 2024-10-30 Java中的final修饰符 java中final可以修饰接口吗
- 2024-10-30 为什么我们在 Java 中使用 static final 作为常量
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)