下面是关于“简单学习Java抽象类要点及实例”的完整攻略。
什么是抽象类
抽象类是一种特殊的类,它不能实例化,只能被继承。抽象类中可以有抽象方法(没有方法体),也可以有非抽象方法(有方法体),但是抽象类中至少要有一个抽象方法。抽象类的主要作用是为了让子类继承并实现它的抽象方法,以此来完成对某个行为的规范和约束。
抽象类的语法
抽象类的语法格式如下:
public abstract class Animal {
public abstract void eat();
public void sleep() {
System.out.println("正在睡觉...");
}
}
在示例代码中,我们定义了一个名为Animal的抽象类,其中有一个抽象方法eat(),没有方法体,还有一个非抽象方法sleep(),有方法体。需要注意的是,在抽象类中也可以定义成员变量、成员方法等。
抽象类的继承
一个类可以继承另一个类或者抽象类。如果继承的是抽象类,就必须实现抽象类中的所有抽象方法,否则这个类也必须声明为abstract。
public abstract class Animal {
public abstract void eat();
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("小猫在吃饭...");
}
}
在示例代码中,我们定义了一个名为Animal的抽象类,其中有一个抽象方法eat(),接着在Cat类中继承了Animal类,并实现了eat()方法。
需要注意的是,如果未实现抽象类中的所有抽象方法,则Cat类必须声明为abstract。
抽象类的实例
抽象类本身不能实例化,但可以通过其子类来实例化。例如,我们在上面已经定义了一个Cat类,可以通过它来实例化一个小猫对象:
Cat cat = new Cat();
cat.eat();
运行结果为:
小猫在吃饭...
示例一:动物类的实现
我们先定义一个Animal抽象类,其中包含三个抽象方法,分别是eat()、sleep()、move(),用于规范每个动物的共性行为:
public abstract class Animal {
public abstract void eat();
public abstract void sleep();
public abstract void move();
}
接着我们定义两个具体的动物类,分别是猫和狗。这两个类都继承了Animal类,并根据自身特点实现了eat()、sleep()、move()方法:
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("小猫在吃饭...");
}
@Override
public void sleep() {
System.out.println("小猫在睡觉...");
}
@Override
public void move() {
System.out.println("小猫在走路...");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("小狗在吃饭...");
}
@Override
public void sleep() {
System.out.println("小狗在睡觉...");
}
@Override
public void move() {
System.out.println("小狗在跑步...");
}
}
接着我们在主函数中实例化这两个类,并分别调用它们的eat()、sleep()、move()方法:
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
cat.eat(); cat.sleep(); cat.move();
dog.eat(); dog.sleep(); dog.move();
}
运行结果为:
小猫在吃饭...
小猫在睡觉...
小猫在走路...
小狗在吃饭...
小狗在睡觉...
小狗在跑步...
示例二:图形类的实现
我们再定义一个Shape抽象类,其中包含两个抽象方法,分别是getArea()、getPerimeter(),用于规范每个图形的共性行为:
public abstract class Shape {
public abstract double getArea();
public abstract double getPerimeter();
}
接着我们定义两个具体的图形类,分别是圆形和矩形。这两个类都继承了Shape类,并根据自身特点实现了getArea()、getPerimeter()方法:
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
public class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return 2 * (width + height);
}
}
接着我们在主函数中实例化这两个类,并分别调用它们的getArea()、getPerimeter()方法:
public static void main(String[] args) {
Circle c = new Circle(5);
Rectangle r = new Rectangle(3, 4);
System.out.println("圆的面积和周长分别为:" + c.getArea() + "、" + c.getPerimeter());
System.out.println("矩形的面积和周长分别为:" + r.getArea() + "、" + r.getPerimeter());
}
运行结果为:
圆的面积和周长分别为:78.53981633974483、31.41592653589793
矩形的面积和周长分别为:12.0、14.0
至此,我们成功地实现了抽象类的基本应用,通过实例化不同子类对象,得到了不同行为的结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单学习Java抽象类要点及实例 - Python技术站