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类

相关文章
|
1月前
|
设计模式 Java
Java基础—笔记—多态、final、抽象类、接口篇
该文介绍了编程中的多态、final和抽象类、接口相关概念。多态允许子类重写父类方法,通过父类引用调用子类方法,实现解耦和提高代码灵活性,但也可能导致无法使用子类特有功能,需通过强制类型转换解决。final用于修饰不可变的类、方法或变量,防止继承、重写和多次赋值。抽象类是一种包含抽象方法的类,用于强制子类重写特定方法,实现多态,适用于模板方法设计模式,解决代码重复问题。
20 0
|
1月前
|
Java
Java中的抽象类:深入了解抽象类的概念和用法
Java中的抽象类是一种不能实例化的特殊类,常作为其他类的父类模板,定义子类行为和属性。抽象类包含抽象方法(无实现)和非抽象方法。定义抽象类用`abstract`关键字,子类继承并实现抽象方法。抽象类适用于定义通用模板、复用代码和强制子类实现特定方法。优点是提供抽象模板和代码复用,缺点是限制继承灵活性和增加类复杂性。与接口相比,抽象类可包含成员变量和单继承。使用时注意设计合理的抽象类结构,谨慎使用抽象方法,并遵循命名规范。抽象类是提高代码质量的重要工具。
39 1
C4.
|
2月前
|
Java
Java抽象类
Java抽象类
C4.
18 0
|
2月前
|
安全 Java
Java 抽象类与方法:实现安全性与代码重用
在 Java 中,可以嵌套类(即类内部的类),称为内部类。嵌套类的目的是将属于一起的类分组,从而使您的代码更可读和可维护。 访问内部类 要访问内部类,请创建外部类的对象,然后创建内部类的对象:
63 0
|
2月前
|
设计模式 搜索推荐 Java
java接口和抽象类的区别,以及使用选择
java接口和抽象类的区别,以及使用选择
26 0
|
3天前
|
Java
Java 抽象类
5月更文挑战第4天
|
3天前
|
Java
Java一分钟之-抽象类与接口的应用场景
【5月更文挑战第9天】Java中,抽象类和接口用于实现多态和抽象。抽象类不能实例化,提供部分实现和定义模板;接口包含无实现的抽象方法,用于定义行为规范和解耦合。选择时,关注行为用接口,部分实现用抽象类。注意抽象类的`final`和`static`方法、接口冲突等问题,明确设计目标,适度抽象,遵循接口设计原则,以提高代码质量。
12 1
|
13天前
|
Java 程序员 数据格式
关于Java抽象类和接口的总结和一点个人的看法
关于Java抽象类和接口的总结和一点个人的看法
|
18天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
26天前
|
设计模式 Java
Java接口与抽象类
Java接口与抽象类
17 0