项目 内容
班级博客链接 19级信计班(本)
作业链接 第十一周作业
博客名称 1903021115—胡天爱—java第十一周作业—JAVA中的继承,多态和抽象类的运用
要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果)

题目1:

  • 类Person定义了姓名name,出生年份birthYear,其子类Graduate在继承父类的基础上新增定义了成绩gpa、毕业年份graduateYear。编写测试类,输出毕业生的姓名、年龄、毕业年份、成绩。

  • 提示:父类要有构造方法,子类通过super调用父类构造方法。
  •  代码如下:
    父类
    package edu.hta.week11;
    
    public abstract class Person {
        public String name;
        public double birthYear;
        
        public Person(String name, double birthYear) {
            super();
            this.name = name;
            this.birthYear = birthYear;
        }
         public String getMessage() {
             return "姓名:" +name;
         }
    }
    
    子类
    package edu.hta.week11;
    
    public class Graduate extends Person {
            int gpa;
            int graduateYear;
            int nowYear;
            public Graduate(String name, double birthYear, int gpa,int graduateYear,int nowYear) {
                super(name, birthYear);
                // TODO Auto-generated constructor stub
                this.nowYear = nowYear;
                this.gpa = gpa;
                this.graduateYear = graduateYear;
            }
            public String getMessage() {
                 return super.getMessage()+"\n毕业年份:"+graduateYear+"\n成绩:"+gpa;
            }
            public double age() {
                double nowYear = 2022;
                return nowYear-birthYear;
        }
    
    }
    
    Test
    package edu.hta.week11;
    
    public class Test {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Graduate g = new Graduate("小敏",1999,98,2023,2022);
            System.out.println("毕业生信息为:"+g.getMessage());
            System.out.println("年龄为:"+g.age());
        }
    }
  • 运行截图:

题目2:

  • 定义一个基本类Shape,有一个draw方法,定义三个类Circle(圆)、Triangle(三角形)、Square(正方形)都继承于Shape。在测试类中定义一个方法doStuff,传入基本类shape为参数,并调用draw方法。使用父类Shape创建三个类Circle、 Triangle、Square的实例对象并分别作为参数传入draw方法中。
  • 提示:多态
  • 代码如下:
    Shape类:
    package edu.hta.week11;
    public class Shape {
        void draw() {}
    }
    
    Circle(圆)
    package edu.hta.week11;
    public class Circle extends Shape {
        void draw() {
            System.out.println("Circle.draw()");
        }
    }
    
    Triangle(三角形)
    package edu.hta.week11;
    public class Triangle extends Shape {
        void draw() {
            System.out.println("Triangle.draw");
        }
    }
    
    Square(正方形)
    package edu.hta.week11;
    public class Square extends Shape {
        void draw() {
            System.out.println("Square.draw");
        }
    }
  • 运行截图

题目3:

  • 所有的动物都有一个父类Animal,再定义两个子类Bird(鸟)和Dog(狗)继承自Animal,并实现父类中的bark(叫唤)方法。

  • 提示:抽象
  • 运行代码
Animal:
package edu.hta.week11;
public abstract class Animal {
    public abstract void bark();
}

鸟类:
package edu.hta.week11;
public class Bird extends Animal {
    @Override
    public void bark() {
        // TODO Auto-generated method stub
        System.out.println("小鸟啾啾");
    }
}

狗类:
package edu.hta.week11;
public class Dog extends Animal {
    @Override
    public void bark() {
        // TODO Auto-generated method stub
        System.out.println("小狗汪汪");
    }
}

Test
package edu.hta.week11;
public class TestAnimal {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Animal b = new Bird();
        Animal d = new Dog();
        b.bark();
        d.bark();
    }
}
  • 运行截图

题目4:

  • 不同几何图形的面积计算公式是不一样的,可是,它们具有的特性是一样的,都具有长和宽这两个属性,也都具有面积计算的方法。根据抽象的概念计算长方形的面积和三角形的面积。

  • 提示:抽象
  • 运行代码
    Shape:
    package edu.hta.week11;
    public abstract class Shape {
        public int width;
        public int height;
        public Shape(int width, int height) {
            super();
            this.width = width;
            this.height = height;
        }
        public abstract double area();
    }
    
    Square:
    package edu.hta.week11;
    public class Square extends Shape {
        public Square(int width, int height) {
            super(width, height);
            // TODO Auto-generated constructor stub
        }
        public double area() {
            return width*height;
        }
    }
    
    Triangle:
    package edu.hta.week11;
    public class Triangle extends Shape {
        public Triangle(int width, int height) {
            super(width, height);
            // TODO Auto-generated constructor stub
        }
        public double area() {
            return 0.5*width*height;
        }
    }
    
    TestShape:
    package edu.hta.week11;
    public class TestShape {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Shape s = new Square(6,8);
            System.out.println("正方形面积为:"+s.area());
            Triangle t = new Triangle(4,9);
            System.out.println("三角形面积为:"+t.area());
        }
    
    }
  • 运行截图

学习心得:

 

在已经存在的类的基础上进行扩充和改造,形成一个新的类。满足“is   a”的关系就是继承

多态是一种事务,多种形态。用名字一样的代码根据要求的不同,干不一样的事情。

分类

1:对象的多态。(父对象引用指向子类实例)

2:方法的多态。(分为方法的重载和重写或者覆盖)

方法的重载

重载是发生在同一类中,函数的名字相同,但是函数的参数个数,和参数类型,只要不一样,就是重载。

函数重写。

    重写发生在两个类中,父类的方法,在子类中重新写。

    重写的函数名字和参数列表完全一样。

    重写的函数只能抛出比之前更小的异常。访问权限只能比之前的更大。

抽象类

概念:

类:用来描述具有共同性质的一组事物的自定义复合数据类型

类:class关键字创建

public class Hello{} ---> 类

抽象类:   通过abstract 修饰的java类就是。

public abstract class Hello{} --> 抽象类

误区 :

判断一个类是不是抽象类不是看有没有抽象方法。而是看 当前类有没有abstract 修饰

具体用法

(1).抽象类不能new,借助子类访问抽象类中的实例元素。

(2).普通的java类继承了抽象类,就需要重写抽象类中的所有抽象方法,否则将这个普通的java类改成抽象类。

(3).抽象类可以继承其他的抽象类,可以不用重写抽象方法。

(4).利用上转型对象创建出抽象类对象

(5).抽象类对象可以访问抽象类中的实例变量、类变量、构造方法、实例方法、类方法、【抽象方法实际上是子类重写以后的方法】。

(6).当某一个普通的java类中的方法参数是抽象类类型的时候,可以传递上转型对象,也可以是抽象类的子类对象。

标签智能推荐:

1903021135-张蝶 实验一19级信计JAVAMARKDOWN排版学习

立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。(7)Java语言是可移植的:这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSIC实现的。(8)Java语言是解释型的:Java程序

题目集4~6作业总结

st的方法去慢慢匹配,导致自己吃了许多的亏,自己一定要在以后写此类题目的时候将正则表达式中的一些方法灵活运用,来减小代码的复杂程度。(3).碰到继承与多态的题时,经常回去创建抽象类以及抽象方法,但是每次抽象方法都不能做到精简,以至于在后面类的继承中,每次继承都需要对抽象类中的抽象方法进行补全,过程便十分繁琐,以后会对抽象类中的抽象方法做到更加的精简,让后面的代码实现起来更加轻松。四、总结&nbsp

0129集训授课面向对象思想(一):封装与抽象

继承)Java的继承机制抽象类和抽象方法(abstract)面向接口编程(接口是什么,怎么用接口,使用接口的好处)继承与接口的区别问题思考1、什么是面向对象?2、什么是对象?一系列行为与属性的一个集合3、面向对象的程序设计与面向过程的程序设计有什么区别?问题与模型4、当我们谈及面向对象时,我们所关心的是什么?面向对象的编程有三大特性:封装、继承和多态。而我们今天聚焦于封装。由String类引入封装

第二次博客作业

字符串进行操作。所以Pattern类和Matcher类的方法结合正则表达式,能使得正则表达式的用法更加灵活方便。五、总结1、通过这三次PTA作业的练习,对于Java语言的编程方式有了更加深入的了解与学习;2、对正则表达式的使用也有了进一步的掌握,学习了Pattern和Matcher类的使用;3、学习了ArrayList类和StringBuilder类的正确使用;4、对Java语言的封装、继承、接口

适合Java零基础小白学习Java零基础视频教程

105-Java零基础-方法递归106-Java零基础-方法递归107-Java零基础-总结第八章:类和对象108-Java零基础-面向对象和面向过程的区别109-Java零基础-类和对象概念110-Java零基础-类的定义111-Java零基础-回顾112-Java零基础-对象的创建和使用-内存分析113-Java零基础-对象的创建和使用-内存分析114-Java零基础-对象的创建和使用-内存分

菜鸡谈OO 第一单元总结

理解形而上的抽象),四个对象之间的关系处理是让我很头疼的一部分。因为Exp,Item,Factor,Num并不是简单的包含关系,他们其实是PPT最后一页的那种彼此纠葛相爱相杀的关系,然而当时的我是菜的看不懂的:)。这种层次化设计我认为是需要细细体会的。我在这次作业中完全没有用到继承和接口,就是因为我几乎没有对面向对象的这种“获取数据处理的归一化能力”的思想产生概念。换句话来说,即使第三次作业我的确

Android第一次作业

Android第一次作业——天气预报界面成果图:思路:运用RelativeLayout布局管理器来设计整体布局,在其中插入需要的图片和文本框,并设置其字体格式和背景。最后用HorizontalScrollView设置滑动框,在其中嵌套多个垂直的LinearLayout,实现一周天气预报的效果。代码链接: https://coding.net/s/f0c877c7-fa8d-46a7-a8

20202315 2020-2021-2《数据结构与面向对象程序设计》 课程总结

 这一章主要讲的是关于树的定义及基本操作、二叉树的性质、二叉树基本操作、二叉树的遍历与排序①树是一种非线性的结构、树的结点、树的叶子、结点的度、树的深度,树的基本操作有查找类、插入类和删除类。②二叉树是一种特殊的树,他有三条性质,满二叉树和完全二叉树是两个特殊的二叉树,一个是结点全满,一个是全满结点最后一层从右开始删减③(虽然我不大理解为什么要用树来排序,这不直接有手就行?)二叉排序树是

OO学期末总结

一个新的雨刷,刻度盘类来继承抽象雨刷,刻度盘接口,这里需要注意的是接口不是类。后面两次的作业需要自己设计uml图,不过还好类图不复杂。第二次作业是统计关键字出现个数,第三次作业是四则运算。先说第二次,我说一下我的思路,就是先将带双引号的字符串删掉,删掉两种注释部分的代码,然后将空格替换所有的符号,删掉多余的空格,最后再使用split将一串串的代码分成一个一个的字,然后在找出其中的关键字,这就是本题

javase2021最强学习线路没有之一

?请问如何在win10系统上安装java?Java零基础怎么入门?建议先学什么?java写了第一个程序结果出问题了?如何扎实自己的Java基础?用dos命令运行Java-version时没有显示版本?第二步:学习数据类型、运算符、变量。这是编程的基础,是程序的“砖块”。这些内容大多数编程语言都有,而且非常类似。变量、数据类型、运算符二进制和十进制的转化注释、单行注释、多行注释、文本注释、注释内容和