为自家企业做网站,外包公司好吗,局网站建设方案,工信和信息化网站备案系统1. 抽象类概念
定义一个类时#xff0c;常常需要定义一些成员方法用于描述类的行为特征#xff0c;但有时这些方法的实现方式是无法确定的。例如#xff0c;Animal类中的shout()方法用于描述动物的叫声#xff0c;但是不同的动物#xff0c;叫声也不相同#xff0c;因此…1. 抽象类概念
定义一个类时常常需要定义一些成员方法用于描述类的行为特征但有时这些方法的实现方式是无法确定的。例如Animal类中的shout()方法用于描述动物的叫声但是不同的动物叫声也不相同因此在shout()方法中无法准确描述动物的叫声。
针对上面描述的情况Java提供了抽象方法来满足这种需求。抽象方法是使用abstract关键字修饰的成员方法抽象方法在定义时不需要实现方法体。抽象方法的语法格式如下。
public abstract 返回值类型 方法名称(参数); //抽象方法无方法体
当一个类包含了抽象方法该类就是抽象类。抽象类和抽象方法一样必须使用abstract关键字进行修饰。抽象类的语法格式如下。
public abstract class 抽象类名称 {public abstract 返回值类型 抽象方法名称(参数); //抽象方法无方法体}
2. 抽象类的规则
从上面抽象类的语法格式中可以发现抽象类的定义比普通类多了一个或多个抽象方法其他地方与普通类的组成基本相同。抽象类的定义规则如下。
1包含抽象方法的类必须是抽象类。
2声明抽象类和抽象方法时都要使用abstract关键字修饰。
3抽象方法只需声明而不需要实现。
4如果非抽象类继承了抽象类那么该类必须实现抽象类中的全部抽象方法。
3. 抽象类案例 案例需求
定义抽象类动物类Animal定义其抽象方法shout()抽象方法用public修饰。
定义一个小猫类Cat继承Animal抽象类在Cat类中覆盖Cat类中的抽象方法shout()输出“小猫喵喵叫”。
编写测试类使用无参构造方法实现Cat类的实例化访问shout()方法。 抽象类Animal类
public abstract class Animal {public abstract void shout();} Cat类
public class Cat extends Animal{Overridepublic void shout() {System.out.println(小猫喵喵叫);}
} 测试类
public class TestCat {Testpublic void test(){Cat cat new Cat();cat.shout();}}
4. 练习
定义抽象类图形类Shape定义其抽象方法getArea()抽象方法用public修饰。
定义一个圆形类Circle继承Shape抽象类在Circle类中定义一个double型的表示半径的成员变量radius成员变量用private修饰定义成员变量的getter和setter方法在Circle中覆盖Shape类中的抽象方法getArea()。
编写测试类使用无参构造方法实现Circle类的实例化访问getArea()方法。 抽象类Shape类
public abstract class Shape {public abstract double getArea();} Circle类
public class Circle extends Shape{private double radius;public void setRadius(double radius) {this.radius radius;}public double getRadius() {return radius;}Overridepublic double getArea() {return Math.PI * radius * radius;}
} 测试类
public class TestCircle {Testpublic void test(){Circle c new Circle();c.setRadius(2);double area c.getArea();System.out.println(圆的面积是 area);}}
5. 思考
自定义抽象类定义其抽象方法抽象方法用public修饰。
自定义非抽象子类继承抽象类覆盖抽象类中的抽象方法。
编写测试类使用无参构造方法实现非抽象子类的实例化访问重写方法。