1.设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、等边三角形类来继承图形类,并实现上述两个方法。并创建实例验证。
首先定义一个抽象图形类,类中两个抽象方法,注意此处返回值选用double型,因为在之后得图形面积计算中会用到π这一double型的数字
public abstract class Graphical {
public abstract double area();
public abstract double grith();
}
圆形类继承图形类
先定义半径这一属性,之后定义构造方法
最后实现父类的方法
public class Circular extends Graphical {
private double r;
public Circular(double r)
{
setR(r);
}
public double area() {
return Math.PI*r*r;
}
public double grith() {
return Math.PI*2*r ;
}
public void setR(double r) {
this.r = r;}
public double getR() {
return r;}
}
矩形类
public class Rectangle extends Graphical{
private double a;
private double b;
public Rectangle(double a,double b)
{
setA(a);
setB(b);
}
public double area() {
return a*b;
}
public double grith() {
return 2*(a+b);
}
public void setA(double a) {
this.a = a;
}
public double getA() {
return a;
}
public void setB(double b) {
this.b = b;
}
public double getB() {
return b;
}
}
等边三角型类
public class Triangle extends Graphical{
private double a;
private double b;
private double c;
public Triangle(double a,double b,double c)
{
setA(a);
setB(b);
setC(c);
}
public double area() {
return Math.sin(Math.PI/3)*a*a/2;
}
public double grith() {
return 3*a;
}
public void setA(double a) {
this.a = a;
}
public double getA() {
return a;
}
public void setB(double b) {
this.b = b;
}
public double getB() {
return b;
}
public void setC(double c) {
this.c = c;
}
public double getC() {
return c;
}
}
测试类
public class Test {
public static void main(String[] arg)
{
Circular cir=new Circular(2.5);
System.out.println("半径为:"+cir.getR()+"的圆面积为:"+cir.area());
System.out.println("半径为:"+cir.getR()+"的圆周长为:"+cir.grith());
Rectangle re= new Rectangle(1,2);
System.out.println("矩形面积为:"+re.area());
System.out.println("矩形周长为:"+re.grith());
Triangle tr = new Triangle(2,2,2);
System.out.println("等边三角形面积为:"+tr.area());
System.out.println("等边三角形周长为:"+tr.grith());
}
}
2.创建一个抽象类动物类以及以下几个接口:进食的接口、睡觉的接口、思考的接口、说话的接口、飞翔的接口。分别定义猫类、人类、鸟类继承动物类并选择实现上述的接口,并创建实例验证。
先定义这五个接口
接口中默认为抽象类
进食的接口
public interface Eat {
public void eat(String type);
}
飞翔的接口
public interface Fly {
public void fly();
}
睡觉的接口
public interface Sleep {
public void sleep();
}
说话的接口
public interface Speak {
public void speak();
}
思考的接口
public interface Think {
public void think();
}
定义抽抽象动物类作为父类
定义两个属性一个种类一个年龄
public abstract class Animals {
private String type;
private int age;
public Animals(String type,int age)
{
setType(type);
setAge(age);
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
需要根据类型来选择接口
猫类继承与动物类
public class Cat extends Animals implements Eat, Sleep, Speak {
public Cat(String type,int age)
{
super(type,age);
}
@Override
public void eat(String type) {
System.out.println(type+"吃鱼");
}
@Override
public void sleep() {
System.out.println("猫趴着睡觉");
}
@Override
public void speak() {
System.out.println("猫喵喵叫");
}
}
鸟类
public class Bird extends Animals implements TestIF {
public Bird(String type,int age)
{
super(type,age);
}
@Override
public void eat(String type) {
System.out.println("鸟吃虫");
}
@Override
public void sleep() {
System.out.println("鸟站着睡觉");
}
@Override
public void speak() {
System.out.println("鸟叽叽喳喳叫");
}
@Override
public void think() {
System.out.println("鸟站着思考");
}
@Override
public void fly() {
System.out.println("鸟用翅膀飞");
}
}
人类
public class Human extends Animals implements Eat, Sleep, Speak, Think {
public Human(String type,int age)
{
super(type,age);
}
@Override
public void eat(String type) {
System.out.println("人吃饭");
}
@Override
public void sleep() {
System.out.println("人躺着睡觉");
}
@Override
public void speak() {
System.out.println("人说不同语言");
}
@Override
public void think() {
System.out.println("人在思考");
}
}