使用抽象类和抽象方法时,需要遵循以下原则:
1)在抽象类中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的类必须被定义为抽象类;
2)抽象类不能直接被实例化,即使抽象类中没有声明抽象方法,也不能被实例化;
3)抽象类被继承后,子类需要重写抽象类中所有的抽象方法;
4)如果继承抽象类的子类也被声明为抽象类,则可以不用重写子类中所有的抽象方法;
1.创建Shape(图形)类。该类中有一个计算面积的方法,圆形和矩形都继承自图形类,输出图形和矩形的面积。运行效果图:
父类:
package Zaria; public abstract class Shape {//父类public double l; //长度public double w; //宽度public double r; //半径public double PI;//πpublic double A; //面积public abstract double calculate(double l,double w); }
圆形子类:
package Zaria; import java.text.DecimalFormat; public class Roundness extends Shape {public double calculate(double PI,double r){A=PI*r*r;DecimalFormat decimalFormat1 = new DecimalFormat("#0.##"); // 设置格式为保留两位小数String formattedNumber1 = decimalFormat1.format(A); // 将数字按指定格式转换成字符串System.out.println("圆形的面积是:"+formattedNumber1);return A;} }
矩形子类:
package Zaria; public class Rectangle extends Shape{public double calculate(double l,double w){A=l*w;System.out.println("矩形的面积是:"+A);return A;}}
主类:
package Zaria; public class Calculate_area {public static void main(String[] args){Shape shape=new Roundness();shape.r=2.6;shape.PI=3.14;System.out.println("r:"+shape.r);System.out.println("PI:"+shape.PI);shape.calculate(shape.PI,shape.r);shape=new Rectangle();shape.w=2;shape.l=2.6;System.out.println("l:"+shape.l);System.out.println("w:"+shape.w);shape.calculate(shape.l,shape.w); } }
2.创建工厂类,工厂类中有一个抽象的生产方法,创建汽车厂和鞋厂类,重写工厂类中的抽象生产方法,输出汽车厂生产的是汽车,鞋厂生产的是鞋。运行效果如下:
父类:
package Zaria; public abstract class Factory {public String goods;//产品public abstract void product(); }
子类:
package Zaria; public class Automobile_factory extends Factory{public void product(){System.out.println("汽车厂生产的是"+goods);} }
子类:
package Zaria; public class Shoe_factory extends Factory{public void product(){System.out.println("鞋厂生产的是"+goods);} }
主类:
package Zaria;
public class ToProduct {
public static void main(String[] args){
Automobile_factory Af=new Automobile_factory();
Af.goods="汽车";
Af.product();
Shoe_factory Sf=new Shoe_factory();
Sf.goods="鞋";
Sf.product();
} }