java抽象类详解

简介: java抽象类详解

前言


在没讲抽象类之前  我们先来看看 final关键字

final 修饰符 可以修饰 类、属性、方法

修饰类时  表示该类不能被继承   其他特征 跟普通的类一样

修饰 属性时 表示 改属性不能改变 并且 必须赋初始值

修饰方法时  表示该方法不能被重写

什么是抽象类?


为什么要使用抽象类?

当我们在写继承时  一般实现时用不到父类 不需要实例化对象  这个时候我们就把这个父类定义为抽象类

也就是说抽象类本身没有实际意义 但是在编写继承或者多态程序时 又不得不定义父类  所有这个时候我们就把父类定义为抽象类俗称抽象父类

抽象类是用abstract 来修饰   抽象类的特点就是不能实例化对象 但是抽象类跟其他类一样 可以被继承

什么是抽象方法?


抽象类中的方法一般在继承和多态时 抽象类都不能创建对象 所有抽象类里面的方法也就没多大用处 但是 抽象类中不可能不定义方法 这个时候我们就将该方法定义为抽象方法

抽象方法的三个特征

1、抽象方法没有方法体

2、抽象方法必须存在于抽象类中

3、必须在子类中重写父类中的抽象方法

方法重写的几大注意事项:

1、子类中方法的名字必须跟父类方法的名字一样

2、子类中方法的参数必须跟父类中的方法参数一样

3、子类中方法的返回值要么跟父类的一样 要么是父类返回值类型的子类

4、子类中的访问权限必须大于等于父类中的访问权限

下面来看一个例子:

abstract class Pet
{
public abstract void eat();
}
class Dog extends Pet
{
public void eat(){
System.out.println("狗吃骨头");
}
}
class Cat extends Pet
{
public void eat(){
System.out.println("猫吃鱼");
}
}
class Nature
{
public void law(Pet p){
p.eat();
}
}
class TestAb
{
public static void main(String[] args)
{
Nature nature = new Nature();
nature.law(new Dog());
nature.law(new Cat());
}
}

接口


接口也是多态的另一种表现形式

语法  interface 接口名{}

需要注意的是接口跟抽象类中的属性和方法有以下区别:

1、接口中的属性默认必须修饰符为public、static、final  缺哪个jvm会自动补哪个

2、 接口中没有构造方法 不能被实例化  抽象类也是不能被实例化

3、接口中的所有方法必须是public、abstract  缺少哪个补哪个

4、接口之间可以多继承

5、一个类可以实现多个接口

6、接口没有继承object类

相关文章
|
3月前
|
存储 Java 开发者
抽象类和接口,你不知道的秘密!Java编程新视角
抽象类和接口,你不知道的秘密!Java编程新视角
40 5
|
3月前
|
设计模式 Java 开发者
抽象类和接口如何改变你的编程方式?Java界的革命
抽象类和接口如何改变你的编程方式?Java界的革命
48 3
|
22天前
|
Java
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
|
24天前
|
Java 测试技术 开发者
Java零基础-抽象类详解
【10月更文挑战第17天】Java零基础教学篇,手把手实践教学!
20 2
|
26天前
|
Java 测试技术 开发者
Java零基础-抽象类详解
【10月更文挑战第15天】Java零基础教学篇,手把手实践教学!
23 2
|
2月前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
27 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
1月前
|
安全 Java 数据安全/隐私保护
【一步一步了解Java系列】:探索抽象类与接口的秘密
【一步一步了解Java系列】:探索抽象类与接口的秘密
26 3
|
2月前
|
Java
Java——抽象类和接口
抽象类是一种不能被实例化的类,至少包含一个抽象方法(无实现体的方法),常用于定义一组相关类的共同特征,并强制子类实现特定方法。抽象方法不能被 `static` 或 `final` 修饰,且必须被重写。 接口则是一个完全抽象的类,用于规范类的行为。接口使用 `interface` 关键字定义,不能实例化,并且类与接口之间是实现关系。 内部类是在一个类内定义的类,分为成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类可被修饰符修饰,静态内部类只能访问外部类的静态成员,局部内部类定义在方法内,匿名内部类则隐藏了名字,直接通过 `new` 关键字定义并实现接口或继承类。
20 5
Java——抽象类和接口
|
1月前
|
Java
Java中抽象类和接口有什么区别?
本文阐述了Java中抽象类和接口的区别,包括类型扩展、方法/属性访问控制符、方法实现、使用目的等方面的不同,并提供了抽象类和接口的使用示例,以及Java中其他类型的类(普通类、内部类等)的简介。
105 0
Java中抽象类和接口有什么区别?
|
2月前
|
Java
Java 抽象类详解
在 Java 中,抽象类是一种特殊类,用于提供基础定义并派生具体子类,支持代码复用。它包含抽象方法(无实现)和具体方法(有实现),不能被实例化,需用 `abstract` 关键字定义。子类必须实现所有抽象方法,除非子类也是抽象类。抽象类可用于定义模板或框架,确保子类实现特定方法。通过示例展示了如何定义抽象类 `Animal` 及其子类 `Dog` 和 `Cat`,并在主类中调用相关方法。使用抽象类可以提高代码复用性和设计质量,但也可能增加维护难度和性能开销。
下一篇
无影云桌面