【java笔记】类/接口作为成员变量类型
类/接口 作为成员变量
以英雄角色为例,有姓名,年龄,武器(类),技能(接口),攻击(方法)
技能接口:
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笔记】类/接口作为成员变量类型相关推荐
- Java语言基础Day14(内部类、类作为成员变量类型、接口作为成员变量类型、接口作为方法的参数或返回值、红包案例、JDK9的JShell、编译器的两点优化)
今日内容 一.内部类 1.内部类的概念与分类 2.成员内部类的定义 3.成员内部类的使用 4.内部类的同名变量访问 5.局部内部类定义 6.局部内部类的final问题 7.匿名内部类 匿名内部类定义格 ...
- java中类作为成员变量类型使用、接口作为成员变量类型使用、接口作为方法的参数或返回值使用
类作为成员变量类型使用: 自定义的类也可以作为成员变量使用,如: // 1.创建一个电脑角色的类: public class Computer{private String computername; ...
- java 接口类型成员变量_18.9 接口作为成员变量类型
>[info] 接口作为成员变量类型 1.创建一个接口 ``` package cn.itcast.day11.demo07; public interface Skill { void use ...
- 2021-11-09类作为成员变量类型
1.类作为成员变量类型 Hero.java package Demo02;public class Hero {private String name;//英雄的名字private int age;/ ...
- 01_11_Java语言入门||02_面向对象与常用类||day11_final、权限、内部类、成员变量类型和方法的参数及返回值特例
第一章 final 1.1 final关键字和概念和四种用法 final关键字代表最终,不可改变的 常见四种用法 可以用来修饰一个类 可以用来修饰一个方法 可以用来修饰一个局部变量 可以用来修饰一个成 ...
- 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)
学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...
- 定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。
题目选自<java基础案例教程第二版>黑马的那本p80 1.思路 2. 代码 3.注意事项 定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO ...
- Java中合理使用局部变量替代成员变量、静态变量
故事起因 一个Java类中可以存在多种形式的变量,可以是最一般的成员变量.或静态变量.或临时变量.如下图: public class VariableDemo {static int staticVa ...
- 为什么 Java 与 Python 在对待成员变量的访问控制方式截然相反?
转自知乎:http://www.zhihu.com/question/20885435 为什么 Java 与 Python 在对待成员变量的访问控制方式截然相反? Java提倡成员变量应该是priva ...
最新文章
- 爱立信2015谋变之路:结盟思科聚焦IT业务
- 【数字信号处理】线性常系数差分方程 ( 使用 matlab 求解 “ 线性常系数差分方程 “ 示例 | A 向量分析 | B 向量分析 | 输入序列分析 | matlab 代码 )
- SOL注入——HTTP头部注入(2)(七)
- .NET Core中使用Dapper操作Oracle存储过程最佳实践
- Linux vim编写编译运行一个.c文件(centeos 8 HelloWorld.c)
- 二维数组名作为实参或者形参
- Spring Cloud Gateway (七)处理流程解析
- 简单了解几种常见的网络通信协议
- 公开处刑,专家博主开发游戏的老王专栏抄袭事件始末
- 至今我尚未见过一个程序化交易系统
- 超简单的倒计时代码编写
- matlab冲激函数delta,信号与系统matlab实验指导书解决方案.doc
- CentOS调整LVM分区
- n行数字组成的数字三角形详解
- 以下关于python函数说法错误的是def_以下关于Python函数的描述中,错误的是()
- 3D视觉缺陷检测:理论与实战!
- 问题简述:算出a年b月c日是当年的多少天
- c log 指定服务器,解决 SQL2000安装程序配置服务器失败。参考服务器错误日志和C:\WINDOWS\sqlstp.log方法...
- android多线程访问网络,Android Day05-网络编程之文件下载之多线程断点续传技术
- VMware无法连接笔记本/电脑摄像头的解决方法