首页 > 编程语言 >Java--类/接口作为成员变量

Java--类/接口作为成员变量

时间:2023-05-18 10:55:51浏览次数:37  
标签:Java String -- void list 接口 Hero public name

Java--类/接口作为成员变量

成员变量也可以使用自定义的类

如何使用String就如何使用自定义的类

image-20230514104454774

代码示例

Weapon类

public class Weapon {
    private String code;

    public Weapon(String code) {
        this.code = code;
    }

    public Weapon() {
    }


    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}

Hero类

public class Hero {
    private String name;
    private int age;
    private Weapon weapon;

    public Hero(String name, int age, Weapon weapon) {
        this.name = name;
        this.age = age;
        this.weapon = weapon;
    }

    public Hero() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Weapon getWeapon() {
        return weapon;
    }

    public void setWeapon(Weapon weapon) {
        this.weapon = weapon;
    }
    public void attack()
    {
        System.out.println("年龄为"+age+"的"+name+"正在使用"+weapon.getCode()+"攻击敌方");
    }
}

Main方法

public class Main {
    public static void main(String[] args) {
        Hero one = new Hero();
        //为英雄设置名称
        one.setName("奥摩");
        one.setAge(20);
        Weapon two= new Weapon("AWM");
        one.setWeapon(two);//装备武器
        one.attack();//攻击


    }
}

接口作为成员变量

将接口作为成员变量

接口的实现

  1. 使用单独的定义类

  2. 使用匿名内部类

  3. 同时使用匿名内部类和匿名对象

    代码实现

    Hero类

    public class Hero {
        private String name;
        private Skll skll;
    
        public Hero() {
        }
        public void attack()
        {
            System.out.println("我是"+name+"正在释放技能");
            skll.show();
            System.out.println("技能释放完毕");
    
    
        }
    
        public Hero(String name, Skll skll) {
            this.name = name;
            this.skll = skll;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Skll getSkll() {
            return skll;
        }
    
        public void setSkll(Skll skll) {
            this.skll = skll;
        }
    
    }
    
    
    

Skll接口实现类

public class NewSkll implements Skll{

    @Override
    public void show() {
        System.out.println("突突突");
    }
}

Main方法

public class Main {
    public static void main(String[] args) {
        Hero one = new Hero();
        one.setName("奥摩");
//        Skll skll= new NewSkll();//使用接口实现类
//        Skll skll =new Skll() {//使用匿名内部类
//            @Override
//            public void show() {
//                System.out.println("突突突突突");
//            }
//        };
        one.setSkll(new Skll() {
            @Override
            public void show() {
                System.out.println("突突突突突");
            }
        });
        one.attack();

    }
}

接口作为方法参数和返回值

接口也是可以作为返回值和方法参数的

image-20230518104154280

代码示例

package Demo01;

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
//前面的变量就是一个接口
        List<String> list = new ArrayList<>();
        list = addName(list);

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

    public static List<String> addName(List<String> list) {
        list.add("蔡徐坤");
        list.add("王源");
        list.add("易烊千玺");
        list.add("王俊凯");
        return list;

    }
}

标签:Java,String,--,void,list,接口,Hero,public,name
From: https://www.cnblogs.com/harper886/p/17411262.html

相关文章

  • 「解题报告」P3703 [SDOI2017]树点涂色
    有趣题,代码超好写,而且思路超有趣!!!首先发现操作1的操作都是某个点到根,不难发现这样每种颜色一定对应着树上的一条链。那么操作2可以直接树上查分求答案,这样我们只需要考虑维护每个点到根的链的数量了。怎么维护链的数量?发现这个操作1长得和LCT的Access操作一模一样啊,所......
  • MySQL免密登录操作
    vi/etc/my.cnf添加到配置文件里面放在[mysqld]下面[mysqld]skip-grant-tables重启服务systemctlrestartmysql登录:mysqlmysql>updatemysql.usersetpassword=password('root')whereuser='root'andhost='localhost';再次回到/etc/my.cnf把刚才添加的......
  • 03]FlexCel的将DBGrid1导出为Excel
    usesFlexCel.Core,FlexCel.XlsAdapter;procedureDataSetToXLS(XLSX:TExcelFile;DataSet:TDataSet;WorkSheetCount:Integer=1;ActiveSheet:Integer=1);varioldrecno,icol,irow:integer;fmt:TFlxFormat;fmtDateTime:Integer;begin......
  • SSO2.0 7-20230517
                ......
  • .NET入门相关学习
    关于.NET连接Mysql: 目前还存在问题:这个教程是关于导出数据库表所有内容的,如何添加删改数据这个教程没写。回头有空补上。两个开发工具:MySQLworkbench:①新建数据库连接:行为:主页下半部分MysqlConnect点击加号,出现窗口即可编辑要点:连接名、主机名、端口、用户、密码②新......
  • python基础学习-发送邮件
    importsmtplibfromemail.headerimportHeaderfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMEText"""发送普通邮件"""#创建邮件主体对象email=MIMEMultipart()#设置发件人、收件人和主题email['From']=&#......
  • 打包谷歌浏览器的扩展程序
    1.打开浏览器工具的拓展程序 2.先找到谷歌浏览器拓展程序的位置在哪谷歌浏览器地址栏输入:chrome:version   3.记住拓展程序的id,找到所在的文件夹的对应id文件名  4.随后打开该插件ID所在的路径,进一步打开该插件的版本号文件夹,然后复制地址栏上的完整路径。 ......
  • Java 会是首选的最佳编程语言吗?
    Java是一种非常流行的编程语言,具有广泛的应用领域和强大的生态系统。它被广泛用于企业级应用程序开发、移动应用程序开发、Web应用程序开发、游戏开发等领域。Java的优点包括跨平台性、面向对象、可靠性高、安全性好、易于学习和使用等。因此,在很多情况下,Java是首选的最佳编程......
  • .gitlab-ci.yml 语法错误导致 runner 报错“expected shallow list”
    报错信息:Runningwithgitlab-runner15.11.0(xxx)ongitrunnrxxx,systemID:s_xxxPreparingthe"shell"executor00:00Preparingenvironment00:00GettingsourcefromGitrepository00:01Fetchingchangeswithgitdepthsetto20...Reinitializ......
  • [rarcrack] you don't have a right permissions!
    https://blog.csdn.net/l1028386804/article/details/84504217https://blog.csdn.net/The_IT_Crowd/article/details/7672676备忘用,老是忘记怎么暴力破解压缩包,这个错误加两个--就行。juwan@juwan-n85-dls:~$rarcrackSchool_Days.rar-threads4-typerarRarCrack!0.2......