类/接口  作为成员变量

以英雄角色为例,有姓名,年龄,武器(类),技能(接口),攻击(方法)

技能接口:

public interface Skill {void use();//使用技能的抽象方法
}

 技能接口实现:

public class SkillImpl implements Skill{@Overridepublic void use() {System.out.println("射击");}
}

武器类:

public class Weapon {private String code;public Weapon() {}public Weapon(String code) {this.code = code;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}
}

 英雄类:

package 面向对象;public class Hero {private String name;private int age;private Weapon weapon;private Skill skill;public Hero() {}public Hero(String name, int age, Weapon weapon, Skill skill) {this.name = name;this.age = age;this.weapon = weapon;this.skill = skill;}public Skill getSkill() {return skill;}public void setSkill(Skill skill) {this.skill = skill;}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()+"攻击对方");skill.use();//多态}}

main

public class Demo {public static void main(String[] args) {Hero hero=new Hero();hero.setAge(20);hero.setName("盖伦");Weapon weapon=new Weapon("多兰剑");hero.setWeapon(weapon);hero.setSkill(new SkillImpl());//向上转型,存的是抽象对象的实现类对象hero.attack();}
}

首先new一个类的对象或者接口的实现对象,然后调用set函数初始化类/接口,

在类的方法中   调用 类成员变量/抽象类的实现类的方法

在接口初始化时,用到了向上转型

接口作为方法的参数或返回值

【java笔记】类/接口作为成员变量类型相关推荐

  1. Java语言基础Day14(内部类、类作为成员变量类型、接口作为成员变量类型、接口作为方法的参数或返回值、红包案例、JDK9的JShell、编译器的两点优化)

    今日内容 一.内部类 1.内部类的概念与分类 2.成员内部类的定义 3.成员内部类的使用 4.内部类的同名变量访问 5.局部内部类定义 6.局部内部类的final问题 7.匿名内部类 匿名内部类定义格 ...

  2. java中类作为成员变量类型使用、接口作为成员变量类型使用、接口作为方法的参数或返回值使用

    类作为成员变量类型使用: 自定义的类也可以作为成员变量使用,如: // 1.创建一个电脑角色的类: public class Computer{private String computername; ...

  3. java 接口类型成员变量_18.9 接口作为成员变量类型

    >[info] 接口作为成员变量类型 1.创建一个接口 ``` package cn.itcast.day11.demo07; public interface Skill { void use ...

  4. 2021-11-09类作为成员变量类型

    1.类作为成员变量类型 Hero.java package Demo02;public class Hero {private String name;//英雄的名字private int age;/ ...

  5. 01_11_Java语言入门||02_面向对象与常用类||day11_final、权限、内部类、成员变量类型和方法的参数及返回值特例

    第一章 final 1.1 final关键字和概念和四种用法 final关键字代表最终,不可改变的 常见四种用法 可以用来修饰一个类 可以用来修饰一个方法 可以用来修饰一个局部变量 可以用来修饰一个成 ...

  6. 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)

    学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...

  7. 定义一个表示学生信息的类Student,要求如下:  (1)类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。

    题目选自<java基础案例教程第二版>黑马的那本p80 1.思路 2. 代码 3.注意事项 定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO ...

  8. Java中合理使用局部变量替代成员变量、静态变量

    故事起因 一个Java类中可以存在多种形式的变量,可以是最一般的成员变量.或静态变量.或临时变量.如下图: public class VariableDemo {static int staticVa ...

  9. 为什么 Java 与 Python 在对待成员变量的访问控制方式截然相反?

    转自知乎:http://www.zhihu.com/question/20885435 为什么 Java 与 Python 在对待成员变量的访问控制方式截然相反? Java提倡成员变量应该是priva ...

最新文章

  1. 爱立信2015谋变之路:结盟思科聚焦IT业务
  2. 【数字信号处理】线性常系数差分方程 ( 使用 matlab 求解 “ 线性常系数差分方程 “ 示例 | A 向量分析 | B 向量分析 | 输入序列分析 | matlab 代码 )
  3. SOL注入——HTTP头部注入(2)(七)
  4. .NET Core中使用Dapper操作Oracle存储过程最佳实践
  5. Linux vim编写编译运行一个.c文件(centeos 8 HelloWorld.c)
  6. 二维数组名作为实参或者形参
  7. Spring Cloud Gateway (七)处理流程解析
  8. 简单了解几种常见的网络通信协议
  9. 公开处刑,专家博主开发游戏的老王专栏抄袭事件始末
  10. 至今我尚未见过一个程序化交易系统
  11. 超简单的倒计时代码编写
  12. matlab冲激函数delta,信号与系统matlab实验指导书解决方案.doc
  13. CentOS调整LVM分区
  14. n行数字组成的数字三角形详解
  15. 以下关于python函数说法错误的是def_以下关于Python函数的描述中,错误的是()
  16. 3D视觉缺陷检测:理论与实战!
  17. 问题简述:算出a年b月c日是当年的多少天
  18. c log 指定服务器,解决 SQL2000安装程序配置服务器失败。参考服务器错误日志和C:\WINDOWS\sqlstp.log方法...
  19. android多线程访问网络,Android Day05-网络编程之文件下载之多线程断点续传技术
  20. VMware无法连接笔记本/电脑摄像头的解决方法

热门文章

  1. ASP.NET画图全攻略(下)
  2. Bailian2930 加减乘除【水题】
  3. Bailian4110 圣诞老人的礼物-Santa Clau’s Gifts【背包+贪心】
  4. HDU2153 仙人球的残影【数学计算+水题】
  5. I00016 打印等腰三角形字符图案(底边在左或右)
  6. 影响历史进程的三只苹果
  7. Java VM(虚拟机) 参数
  8. plink 与 ssh 远程登录问题
  9. 【matlab】GPU 显卡版本与计算能力(compute capability)兼容性问题
  10. 商场内自动扶梯的研究