A.抽象类的简单概述:
抽象类是指在普通类的结构里面增加抽象方法的组成部分。在Java中一个没有方法体的方法被定义为抽象方法,如果一个类中有抽象方法,那么这个类必须定义为抽象类。
B.抽象类的特点:
a.抽象类和抽象方法必须有"abstract"关键字修饰。
public abstract class 类名 { }
b.抽象类中不一定只有抽象方法,有抽象方法的类一定是抽象类。
c.抽象类不能实例化,抽象类应该按照多态通过子类对象进行实例化,叫做抽象类多态。
d.抽象类的子类:
1.要么是抽象类;
2.要么重写抽象类中所有的抽象方法;
e.代码案例;
package demo123;
/**
* @author ln
* @date 2022/1/23
* @desription 抽象类的特点
*/
//抽象类
public abstract class Animal {
//抽象方法
public abstract void eat();
//普通方法
public void sleep() {
System.out.println("睡觉。。。。");
}
}
package demo123;
/**
* @author ln
* @date 2022/1/23
* @desription 抽象类的特点
* 子类
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫要吃鱼。。。。");
}
}
package demo123;
/**
* @author ln
* @date 2022/1/23
* @desription 抽象类的特点
* 测试类
*/
public class AnimalTest {
public static void main(String[] args) {
//抽象类多态完成实例化
Animal cat = new Cat();
cat.eat();
cat.sleep();
}
}
C.抽象类中的成员特点:
a.成员变量:
1.可以为变量;
2.可以为常量;
b.构造方法:
1.可以存在构造方法,但不能实例化
2.构造方法的意义在于子类访问父类数据的初始化
d.成员方法:
1.可以有成员方法,为了提高代码的复用性;
2.可以有抽象方法,目的为了限定子类必须完成父类的某些动作
e.代码案例;
package demo123;
/**
* @author ln
* @date 2022/1/23
* @desription 抽象类中成员的特点
*/
public abstract class Animal02 {
//变量
private int age = 5;
//常量
public final String address = "武汉";
//构造方法
public Animal02 () {}
public Animal02 (int age) {
this.age = age;
}
//抽象方法
public abstract void eat();
//普通方法
public void show(){
age = 6;
System.out.println(address);
System.out.println(age);
}
}
package demo123;
/**
* @author ln
* @date 2022/1/23
* @desription 抽象类中成员的特点
*/
public class Cat02 extends Animal02 {
@Override
public void eat() {
System.out.println("猫要吃鱼。。。。");
}
}
package demo123;
public class AnimalTest02 {
public static void main(String[] args) {
Animal02 cat = new Cat02();
cat.eat();
cat.show();
}
}