实验目的:
在集成开发环境下,实现类的继承及多态性,运用抽象方法、接口及抽象类来对应实际问题来进行程序编写。
实验目标:
(1)能够运用Java语言来实现类的继承及多态性、熟练使用包来扩展程序功能并能建立自己的包;
(2)能够灵活运用Java语言的抽象方法、接口、抽象类来编写应用程序解决实际问题。
实验内容:
1.设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、等边三角形类来继承图形类,并实现上述两个方法。并创建实例验证。
2.创建一个抽象类动物类以及以下几个接口:进食的接口、睡觉的接口、思考的接口、说话的接口、飞翔的接口。分别定义猫类、人类、鸟类继承动物类并选择实现上述的接口,并创建实例验证。
源代码及结果
1.设计一个抽象类图形类
package experiment21;
public abstract class Picture {
//求周长
public abstract Double shapeC();
//求面积
public abstract Double shapeS();
}
package experiment21;
public class Rectangle extends Picture{
private double l;
private double w;
public void setL(double l) {
this.l = l;
}
public double getL() {
return l;
}
public void setW(double w) {
this.w = w;
}
public double getW() {
return w;
}
public Double shapeS(){
return w*l;
}
public Double shapeC(){
return 2*(l+w);
}
public Rectangle(double l,double w){
this.l = l;
this.w = w;
}
}
package experiment21;
public class Round extends Picture{
private double r;
public void setR(double r) {
this.r = r;
}
public double getR() {
return r;
}
public Double shapeS(){
return 3.14*r*r;
}
public Double shapeC(){
return 3.14*2*r;
}
public Round(double r){
this.r = r;
}
}
package experiment21;
public class Triangle extends Picture{
private double l;
public void setL(double l) {
this.l = l;
}
public double getL() {
return l;
}
public Double shapeS(){
double s = (3*l) / 2;
double area = Math.pow(s*((s - l)*(s - l)*(s - l)), 0.5);
return area;
}
public Double shapeC(){
return 3*l;
}
public Triangle(double l){
this.l = l;
}
}
package experiment21;
public class Test {
public static void main(String[] args){
Rectangle rectangle=new Rectangle(3.4,4);
System.out.println("长为:"+rectangle.getL()+"宽为:"+rectangle.getW()+"矩形面积为:"+rectangle.shapeS()+"矩形的周长为:"+rectangle.shapeC());
Round round=new Round(1.25);
System.out.println("半径为:"+round.getR()+"圆形面积为:"+round.shapeS()+"圆形的周长为:"+round.shapeC());
Triangle triangle=new Triangle(7.9);
System.out.println("边长为:"+triangle.getL()+"等边三角形面积为:"+triangle.shapeS()+"等边三角形的周长为:"+round.shapeC());
}
}
2.创建一个抽象类动物类
package experiment22;
public abstract class Animal {
private String sex;
private int age;
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public Animal(String sex,int age){
this.sex = sex;
this.age = age;
}
}
package experiment22;
public class Bird extends Animal implements EatIF, FlyIF, SleepIF, SpeakIF{
public Bird(String sex, int age) {
super(sex, age);
}
public void eat() {
System.out.println("鸟吃米");
}
public void fly() {
System.out.println("鸟会飞");
}
public void sleep() {
System.out.println("鸟站着睡");
}
public void speak() {
System.out.println("鸟:喳喳叫");
}
}
package experiment22;
public class Cat extends Animal implements EatIF, SleepIF, SpeakIF {
public Cat(String sex, int age) {
super(sex, age);
}
public void eat() {
System.out.println("猫咪吃猫粮");
}
public void sleep() {
System.out.println("猫咪趴着睡");
}
public void speak() {
System.out.println("猫咪:喵~");
}
}
package experiment22;
public class Human extends Animal implements EatIF, SleepIF, SpeakIF, ThinkIF {
public Human(String sex, int age) {
super(sex, age);
}
public void eat() {
System.out.println("人吃火锅、炸鸡、汉堡");
}
public void sleep() {
System.out.println("人躺着睡");
}
public void speak() {
System.out.println("人想挣钱");
}
public void think() {
System.out.println("人说中文、英文");
}
}
package experiment22;
public interface EatIF {
public void eat();
}
package experiment22;
public interface FlyIF {
public void fly();
}
package experiment22;
public interface SleepIF {
public void sleep();
}
package experiment22;
public interface SpeakIF {
public void speak();
}
package experiment22;
public interface ThinkIF {
public void think();
}
package experiment22;
public class Text {
public static void main(String[] args) {
Cat c = new Cat("公",3);
c.eat();
c.speak();
c.sleep();
Human h = new Human("女",18);
h.eat();
h.speak();
h.sleep();
h.think();
Bird b = new Bird("公",2);
b.eat();
b.sleep();
b.speak();
b.fly();
}
}
实验小结
通过这实验,我有了以下的收获:
(1)关键字abstract,可以修饰类,也可以修饰方法。
(2)修饰类的话,可以创建构造方法,但是不可以被实例化,创建构造方法的目的是为了子类的调用。
(3)有抽象方法的类一定是抽象类,抽象类可以没有抽象方法,抽象类可以有非抽象方法。
(4)如果抽象类的子类重写了所有的抽象方法,子类可以是非抽想类,则可以实例化。
(5)如果抽象类的子类没有重写了所有的抽象方法,则子类是抽想类,不可以实例化。
今天的文章java面向对象程序设计实验_JAVA什么是面向对象[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/67079.html