精华内容
下载资源
问答
  • java是否能实现多继承

    千次阅读 2017-03-22 23:04:44
    答案是: 能,但是java实现多继承java当中的接口之间能实现多继承,而java当中的类是不能实现多继承的,类只能实现继承; 类不能实现多继承的原因是: 如果类之间实现多继承,将可能造成程序的紊乱,因为类...

    答案是: 能,但是java能实现多继承是java当中的接口之间能实现多继承,而java当中的类是不能实现多继承的,类只能实现单继承;

    类不能实现多继承的原因是: 如果类之间实现了多继承,将可能造成程序的紊乱,因为类与类之前可能存在相同的方法,程序在运行子类的对象或者

    子类调用某一方法,若父类中含有相同的方法,比如父类中都含有show()的方法,子类调用时系统将不知调用哪个父类的方法,从而程序报错,所以java的类与类之间是不能实现多继承的,只能实现单继承。接口之间能实现多继承;

    展开全文
  • java中的接口之间可以实现多继承,也可以实现多实现。但是java中的类只能实现继承 类不能实现多继承的...子类调用时系统将不知调用哪个父类的方法,从而程序报错,所以java的类与类之间是不能实现多继承的,只...

    java中的接口之间可以实现多继承,也可以实现多实现。但是java中的类只能实现单继承

    • 类不能实现多继承的原因是: 如果类之间实现了多继承,将可能造成程序的紊乱,因为类与类之前可能存在相同的方法,程序在运行子类的对象或者子类调用某一方法,若父类中含有相同的方法,比如父类中都含有show()的方法,子类调用时系统将不知调用哪个父类的方法,从而程序报错,所以java的类与类之间是不能实现多继承的,只能实现单继承。接口之间能实现多继承;
    展开全文
  • Java程序设计》 实验报告 20 19~20 20学年第 1学期 学 院 信息学院 班 级 计算机科学与技术18(3) 姓 名 申屠志刚 学 号 ...

    浙江理工大学

    Java程序设计》

     实验报告

     20 19~20 20学年第 1学期     

     

    信息学院

     

    计算机科学与技术183

     

    申屠志刚

     

    2018329621200

    任课教师

    任祝

    9 周二 345节)

       计算机科学与技术专业

    20 19 10

    《Java程序设计》实 验 报 告(三)

    实验名称: Java的接口与继承

    实验地点10-306

    所使用的工具软件及环境:

    JDK1.7或1.8与Eclipse

     

     

    一、实验目的:

    熟悉Java类的建立与使用。熟悉类的继承、多态与动态绑定技术。

    二、实验内容:

    题目1. 接口

    体操比赛计算选手成绩的办法是去掉一个最高分和一个最低分再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班学生的平均成绩。请实现体操比赛得分计算的Gymnastics 类和学校科目考试分数计算的School 类,这两个类都实现了ComputerAverage接口。其中,Gymnastics类实现了去掉一个最高分和一个最低分再计算平均分;School类计算全班学生的平均成绩。

    接口定义如下,其中输入的参数是一组double类型的分数。

    interface ComputerAverage{

    public double average(double x[]);

    }

    题目2. 继承

    设计一个类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类、Rectangle(矩形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。每个类都要覆盖toString方法。

    []

    海伦公式:三角形的面积等于s(s-a)(s-b)(s-c)的开方,其中s=(a+b+c)/2

     

    三、要求:

    (1)说明原理

    题目1. 接口

    Java接口创建与实现

    题目2. 继承

    Java类的继承、多态与动态绑定技术

    (2)源代码

    题目1. 接口

    Main.java

    public class Main {

     

        public static void main(String[] args) {

            // TODO 自动生成的方法存根

             double a[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97};

             double b[]={89,56,78,90,100,77,56,45,36,79,98};

             ComputerAverage computer;

             computer=new Gymnastics();

             double result= computer.average(a);

             System.out.printf("%n");

             System.out.printf("体操选手最后得分:%5.3f\n",result);

             computer=new School();

             result=computer.average(b);

             System.out.printf("班级考试平均分数:%-5.2f\n",result);

        }

     

    }

    ComputerAverage.java

    public interface ComputerAverage{

        public double average(double x[]);

    }

    Gymnastics.java

    public class Gymnastics implements ComputerAverage {

     

        public double average(double x[]) {

            int count=x.length;

            double aver=0,temp=0;

                for(int i=0;i<count;i++){

                    for(int j=0;j<count;j++){

                        if(x[j]<x[i])

                        {

                           temp=x[j];

                           x[j]=x[i];

                           x[i]=temp;

                        }

                     }

                }

             for(int i=0;i<count-1;i++)

             {

             aver=aver+x[i];

             }

             if(count>2)

             aver=aver/(count-2);

             else

                 aver=0;

             return aver;

        }

    }

    School.java

    public class School implements ComputerAverage {

     

        public double average(double x[]) {

            int count=x.length;

            double aver=0;

            for(int i=0;i<count;i++){

                 aver+=x[i];

            }

            aver=aver/count;

            return aver;

        }

    }

    题目2. 继承

    Main.java

    public class Main {

     

        public static void main(String[] args) {

            // TODO 自动生成的方法存根

            Rectangle r=new Rectangle(3.0,4.0);

            Circle c=new Circle(3.0);

            Triangle s=new Triangle(4.0,3.0,5.0);

            Shape[] shapes=new Shape[3];

            shapes[0]=r;

            shapes[1]=c;

            shapes[2]=s;

            for(int i=0;i<shapes.length;i++) {

                System.out.println(shapes[i].toString());

                System.out.println("周长为:"+shapes[i].perimeter()+" "+"面积为:"+shapes[i].area());

            }

        }

    }

    Shape.java

    public abstract class  Shape {

        String color="black";

        public abstract double area();

        public abstract double perimeter();

        public void SetColor(String newcolor) {

            color=newcolor;

        }

    }

    Circle.java

    public class Circle extends Shape{

        double r=0.0;

        final double PI=3.1415926;

        Circle(){

            this.r=0;

        }

        Circle(double r){

            this.r=r;

        }

        public String toString(){

            return ":半径为"+r;

        }

        public double area() {

            return r*r*PI;

        }

        public double perimeter() {

            return 2*r*PI;

        }

    }

    Rectangle.java

    public class Rectangle extends Shape{

        double a,b;

        Rectangle(){

            this.a=0;

            this.b=0;

        }

        Rectangle(double a,double b){

            this.a=a;

            this.b=b;

        }

        public String toString(){

            return "矩形:边长分别为"+a+","+b;

        }

        public double area() {

            return a*b;

        }

        public double perimeter() {

            return 2*(a+b);

        }

    }

    Triangle.java

    public class Triangle extends Shape{

        double a,b,c;

        Triangle(){

            this.a=0;

            this.b=0;

            this.c=0;

        }

        Triangle(double a,double b,double c){

            this.a=a;

            this.b=b;

            this.c=c;

        }

        public String toString(){

            return "三角形:边长分别为"+a+","+b+","+c;

        }

        public double area() {

            double s=(a+b+c)/2;

            return Math.sqrt(s*(s-a)*(s-b)*(s-c));

        }

        public double perimeter() {

            return a+b+c;

        }

    }

     

     

    (3)结果截图

    题目1. 接口

     

     

     

    题目2. 继承

     

     

     

     

     

     

     

    四、实验收获与体会:

    1、熟悉Java类的建立与使用。

    2、掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;

    3、理解类的成员的访问控制的含义,公有、私有和保护成员的区别;

    4、学会通过建立类及对象,用类的成员函数和对象访问类的成员;

    5、学会利用建立类的构造函数,完成类的成员的初始化工作;

    6、熟悉类的继承、多态与动态绑定技术。

       

     

     

    展开全文
  • Java实现的多重“继承

    千次阅读 2019-08-18 13:28:06
    首先,多重继承指的是一个类可以同时从个的父类那里继承属性和行为,然而我们知道Java为了保证数据安全,它只允许单继承,使用关键字(extends)来完成。但是这样的话,我们在设计程序会遇到一些麻烦。对于小编来说...

    首先,多重继承指的是一个类可以同时从多个的父类那里继承属性和行为,然而我们知道Java为了保证数据安全,它只允许单继承,使用关键字(extends)来完成。但是这样的话,我们在设计程序会遇到一些麻烦。对于小编来说,我不但可以继承父亲的基因也能继承母亲的。所以我们的Java也为我们提供两种方式实现多重继承:
    1:使用接口,并使用关键字(implements)来实现。
    2:使用内部类来完成。

    一、 接口
    我们知道子类只能继承一个父类,也就是说只能存在单一继承,但是却可以实现多个接口,这就为我们实现多重继承做了铺垫。
    对于接口而已,有时候它所表现的不仅仅只是一个更纯粹的抽象类,接口是没有任何具体实现的,也就是说,没有任何与接口相关的存储,因此也就无法阻止多个接口的组合了。(这里就不写代码来实现,主要看内部类是如何实现的)
    **二、内部类 **
    看一个人如何既能继承父亲的基因也能继承母亲(直接上代码):

    package com.test3.theway;
    
    public class Father {
        public String Fa(){
            return "父亲的基因";
        }
    }
    package com.test3.theway;
    
    public class Mother {
    
        public String Mo(){
            return "母亲的基因";
        }
    
    }
    
    
    package com.test3.theway;
    
    public class Son {
        //使用内部来继承
        class Father_1 extends  Father{
            public String f(){
                return super.Fa()+1;
            }
        }
        class Mother_1 extends Mother{
            public String m(){
                return super.Mo()+1;
            }
        }
        public String getFa(){
            return new Father_1().f();
        }
        public String getMo(){
            return new Mother_1().m();
        }
    
        public static void main(String[] args) {
            Son son=new Son();
            System.out.println("son的基因是:"+son.getFa()+"和"+son.getMo());
        }
    }
    
    
    结果:
    son的基因是:父亲的基因1和母亲的基因1
    Process finished with exit code 0
    

    这里定义了两个内部类,他们分别继承父亲Father类、母亲类Mother类,且都可以非常自然地获取各自父类的行为,这是内部类一个重要的特性:内部类可以继承一个与外部类无关的类,保证了内部类的独立性,正是基于这一点,多重继承才会成为可能。

    展开全文
  • 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文...
  • 大家好,这是我的第一次写博客,主要是想记录自己的学习过程,话不说,来聊一下Java中的类的继承与接口的实现个人理解。 Java是面向对象的程序设计语言,所以我们经常要用到类。在类中经常被提到的就是类的继承,...
  • Java实现多重继承

    千次阅读 2018-06-07 16:14:13
    多重继承指的是一个类可以同时从多于一个的...一、接口 在介绍接口和抽象类的时候了解到子类只能继承一个父类,也就是说只能存在单一继承,但是却可以实现多个接口,这就为我们实现多重继承做了铺垫。 对于接口而...
  • 多重继承是创建具有个超类的单个类的能力。 与其他一些流行的面向对象的编程语言(例如C ++)不同, java不提供对类中多重继承的支持。 Java不支持类中的多重继承,因为它可能导致钻石问题,而不是提供一些复杂的...
  • Java 5以前实现多线程有两种实现方法:一种是继承Thread类;另一种是实现Runnable接口。两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了...
  • 所以java多继承机制进行改良,在Java中变成了多实现。 一个类可以实现多接口 多实现是怎么体现的? interface A { public void show(); } interface Z { public void show(); public int add...
  • Java实现多线程的方式之一是继承Thread类,然后重写run()方法package com.xiao.thread; /** * @Author 笑笑 * @Date 20:22 2018/05/22 */ public class MyThreadClass extends Thread {   @Override ...
  • 继承和多态思想模拟饲养员喂养不同动物的实现思路: 创建各种动物的父类Animal,在该类中定义eat()方法,该方法中不进行任何的业务操作。 创建5个动物类子类,分别是马(Horse)、绵羊(Sheep)、老虎(Tigger)...
  • Java swing+socket实现多人聊天程序

    千次阅读 2018-11-13 23:52:58
    swing+socket实现多人聊天程序 1.准备工作 先看效果: 客户端项目结构图: 服务端项目结构图:   2.运行原理 服务端 先开一个线程serverListerner,线程中开启一个Serversocket 用Serversocket.accept()...
  • Java 实现多线程的四种方式

    万次阅读 2020-09-19 22:06:34
    Java实现多线程一共有四种方式: 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口 线程池 下面我将对这四种方式进行入门级的解析和演示。 一、继承 Thread 类 通过继承 Thread 类实现多线程的步骤...
  • Java 继承(extends)详解

    万次阅读 多人点赞 2016-10-11 10:55:19
    一、继承问题的引出 继承性是面向对象的第二大主要...下面首先编写两个程序:Person类、Student类。 Person类: class Person { private String name ; private int age ; public void setName(String name) {
  • Java 类的继承详解

    千次阅读 2021-02-12 23:53:43
    这里将对JAVA中的类的继承机制进行讨论。先提一个问题:为什么要使用继承(后面再解答)。1.首先是类继承的写法:继承的关键字:extends格式:public class 类名(子类、派生类、超类) extends 类名(父...
  • Java多线程的4种实现方式详解以及案例演示

    千次阅读 多人点赞 2020-03-11 23:08:55
    介绍了Java多线程的4种实现方式:继承Thread、实现Runnable、实现Callable、使用线程池。
  • 问: 接口里面可以写方法吗? 答: 当然可以啊,默认就是抽象方法。 . 问: 那接口里面可以写实现方法吗? 答:不可以,所有方法必须是抽象的。
  • java中的继承详解

    万次阅读 多人点赞 2020-12-19 08:43:00
    继承的描述在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫...
  • Java继承与组合

    千次阅读 2019-05-17 09:33:39
    继承实现类复用的重要手段,但继承带来了一个坏处:破坏封装 组合也是实现类复用的重要方式,而组合可以提供良好的封装性。 本文包含以下内容 使用继承的注意点 利用组合实现复用 1. 使用继承的注意点 子类扩展...
  • java程序实现小球来回运动

    千次阅读 2017-11-12 17:06:51
    java基础:窗口右上角有一个静小白球,左下角有一个动小蓝球,我们让动小蓝球去找静小白球,找到以后动小蓝球在原路返回,这样来回运动。背景是下雪场景。import java.awt.Component;import javax.swing.JFrame;...
  • Java继承概念和关键字

    千次阅读 2019-05-07 20:55:39
    继承java面向对象的三大特征之一,继承可以解决编程中代码冗余的问题,是实现代码重用的重要手段之一。继承是软件可重用性的一种表现,新类可以在不增加自身代码的情况下,通过从现在的类中继承其属性和方法,来...
  • java实现多线程的方法有哪几种

    千次阅读 2018-09-21 23:55:25
    实现多线程的方法有三种: 实现Runnable接口,并实现接口的run()方法 继承Thread类,重写run方法 实现Callable接口,重写call()方法 实现Runnable接口,并实现接口的run()方法 (1)自定义类并实现Runnable接口,...
  • Java实现多重继承技巧

    千次阅读 2017-02-14 10:16:13
    Java实现多重继承
  • Java多线程实现的四种方式

    万次阅读 多人点赞 2017-07-19 01:45:07
    Java多线程实现的方式有四种 1.继承Thread类,重写run方法 2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target 3.通过Callable和FutureTask创建线程 4.通过线程池创建...
  • Java并发编程更的是和线程相关。 进程  进程是一个独立的执行单元,可将其视为一个程序或应用。然而,一个程序内部同事还包含个进程。Java运行时环境就是一个单独的进程,在它内部还包含了作为进程的各种类和...
  • 继承Thread类:继承Thread类,再重写Thread类的Run方法,然后调用start()方法启动线程,启动线程后执行的是run方法。注意:次启动线程(次调用start()方法)是不合法的。 实现Runnable接口:实现Runnable接口,...
  • java中类的继承详解。

    万次阅读 多人点赞 2018-07-11 21:42:48
     实现继承的类被称为子类. 被继承的类被称为父类. 父类和子类的关系, 是一种一般和特殊的关系. 例如水果和苹果的关系, 苹果继承了水果, 苹果是水果的子类, 水果是苹果的父类.Java里子类继承父类的语法格式如下:...
  • Java中如果一个类同时继承接口A与B,并且这两个接口中具有同名方法,会怎么样? 动手做实验: 1 interface A{ 2 void fun(); 3 } 4 interface B{ 5 void fun(); 6 } 7 interface C extends A,B{ 8...
  • Java接口-多重继承-Java编程思想

    千次阅读 2018-01-20 15:43:03
    一个类同时继承基类和个接口时,该类中是否可以不实现接口中的方法? 一个类同时实现多个接口,能否向上转型到各接口? 一个类同时实现多个接口,接口中的方法签名是否可以保持一样? 代码解惑 package think...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 603,476
精华内容 241,390
关键字:

java程序如何实现多继承

java 订阅