Java面向对象编程(封装/继承/多态)实例解析
作者:书思BookReflect 发布时间:2023-11-11 11:33:09
标签:java,面向对象
本文主要介绍了面向对象的三大特征实例解析,下面看看具体内容。
封装
封装一个Teacher和Student类
package com.hz.test;
public class Teacher {
private String name;
private String majorDirection;
private String teachCourse;
private int teachAge;
public Teacher() {
super();
}
public Teacher(String name,String majorDirection,String teachCourse,int teachAge) {
this.name = name;
this.majorDirection = majorDirection;
this.teachCourse = teachCourse;
this.teachAge = teachAge;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMajorDirection() {
return majorDirection;
}
public void setMajorDirection(String majorDirection) {
this.majorDirection = majorDirection;
}
public String getTeachCourse() {
return teachCourse;
}
public void setTeachCourse(String teachCourse) {
this.teachCourse = teachCourse;
}
public int getTeachAge() {
return teachAge;
}
public void setTeachAge(int teachAge) {
this.teachAge = teachAge;
}
public String toString() {
return "姓名=" + getName() + ", 专业方向=" + getMajorDirection()
+ ", 所教课程=" + getTeachCourse() + ", 教龄=" + getTeachAge();
}
}
Student类
package com.hz.test;
import java.util.Arrays;
/**
* @author ztw
*
*/
public class Student {
private String name;
private int age;
private String[] courses;
private String interest;
public Student() {
super();
}
public Student(String name,int age,String[] courses,String interest) {
this.name = name;
this.age = age;
this.courses = courses;
this.interest = interest;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
if(age<0){
System.out.println("年龄不能为负值");
}else{
this.age = age;
}
}
public int getAge(){
return age;
}
public void setCourses(String[] courses){
this.courses = courses;
}
public String getCourses(){
return Arrays.toString(courses);
}
public void setInterest(String interest){
this.interest = interest;
}
public String getInterest(){
return interest;
}
public String toString() {
return "姓名=" + getName() + ", 年龄=" + getAge() + ", 课程=" + getCourses()
+ ", 兴趣=" + getInterest();
}
}
测试类
package com.hz.test;
public class Test {
public static void main(String[] args) {
String arr[] = {"阿斯达","是的","大概","太诱惑"};
Student stu = new Student("张三",21,arr,"打球");
Teacher tea = new Teacher("王五","阿斯达","阿斯达",99);
System.out.println(stu);
System.out.println(tea);
}
}
输出结果:
姓名=张三, 年龄=21, 课程=[阿斯达, 是的, 大概, 太诱惑], 兴趣=打球
姓名=王五, 专业方向=阿斯达, 所教课程=阿斯达, 教龄=99
继承
定义Play,TaoistPriest,Master,Warrior
public class Play {
String main;
public Play(String main) {
this.main = main;
}
public void hitMonster() {
System.out.println(main+"打怪");
}
}
/**
* TaoistPriest:道士
* @author ztw
*
*/
public class TaoistPriest extends Play {
{
System.out.print("我是道士:");
}
public TaoistPriest(String main) {
super(main);
}
}
/**
* Master:法师
* @author ztw
*
*/
public class Master extends Play{
{
System.out.print("我是法师:");
}
public Master(String main) {
super(main);
}
}
/**
* Warrior:武士
* @author ztw
*
*/
public class Warrior extends Play{
{
System.out.print("我是武士:");
}
public Warrior(String main) {
super(main);
}
}
测试类
public class Test {
public static void main(String[] args) {
TaoistPriest tp = new TaoistPriest("灵魂火符");
tp.hitMonster();
Master m = new Master("雷电术");
m.hitMonster();
Warrior w = new Warrior("烈火术");
w.hitMonster();
}
}
输出结果:
我是道士:灵魂火符打怪
我是法师:雷电术打怪
我是武士:烈火术打怪
多态
服务器,客户端交互
LoginListener
public interface LoginListener {
public void succeed(String msg);
public void failed(String msg);
}
MyLoginListener
public class MyLoginListener implements LoginListener{
public void succeed(String msg) {
System.out.println(msg);
}
public void failed(String msg) {
System.out.println(msg);
}
}
Server
public class Server {
public void login(String userName,String password,LoginListener listener) {
System.out.print("loading");
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(100*i);
System.out.print(".");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(userName.equals("zhangsan") && password.equals("123")){
if(listener!=null){
listener.succeed("登录成功");
}
}else{
if(listener!=null){
listener.succeed("登录失败");
}
}
}
}
测试类
public class LoginTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String userName = sc.next();
System.out.println("请输入用户密码:");
String password = sc.next();
Server server = new Server();
server.login(userName, password, new MyLoginListener());
}
}
输出结果
请输入用户名:
zhangsan
请输入用户密码:
123
loading……….登录成功
来源:http://blog.csdn.net/qq_33624284/article/details/53606306
0
投稿
猜你喜欢
- Java 编程语言中时间的处理类有 Date类与 Calendar类。目前官方不推荐使用 Date类,因为其不利于国际化;而是推荐使用 Ca
- 在spring中有很多以XXXAware命名的接口,很多人也不清楚这些接口都是做什么用的,这篇文章将描述常用的一些接口。一,Applicat
- 什么是Mapping同样的,我们先讲基本概念,什么是mapping,上节给大家简要的举了一个例子,还有印象吗?mapping是es中一个比较
- 一,栈1,概念在我们软件应用 ,栈这种后进先出数据结构的应用是非常普遍的。比如你用浏 览器上网时不管什么浏览器都有 个"后退&qu
- Java5 在 java.util.concurrent 包中已经包含了读写锁。尽管如此,我们还是应该了解其实现背后的原理。读/写锁的 Ja
- 在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。使用流程【1】准备工作:在项目的工具包下导入HttpClient
- 1、JavaBean介绍 * JavaBean的定义:JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)
- 一、MyBatis Plus 介绍MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强
- 以下摘自胖哥分享的 2022开工福利教程。在学习Spring Security的时候你有没有下面这两个疑问:Spring Security的
- 先上代码新建一个Thread,代码如下:package com.thread.test;public class MyThread exte
- 如果不熟悉Java8新特性的小伙伴,初次看到函数式接口写出的代码可能会是一种懵逼的状态,我是谁,我在哪,我可能学了假的Java,(・∀・(・
- 关于《JavaCV的摄像头实战》系列《JavaCV的摄像头实战》顾名思义,是使用JavaCV框架对摄像头进行各种处理的实战集合,这是欣宸作为
- 大家好,我是老三,Spring是我们最常用的开源框架,经过多年发展,Spring已经发展成枝繁叶茂的大树,让我们难以窥其全貌。这节,我们回归
- 在springboot的开发中,有时候我们会有不同的配置,例如日志打印,数据库连接等,开发,测试,生产每个环境可能配置都不一致,还好,spr
- 工作需要,经常需要实现api接口,但每次都是大同小异,我就考虑是否可以将这种重复性的工作配置化。我就写一个模板api,然后所有的HTTP请求
- 1、说明isInterrupted()可以判断当前线程是否被中断,仅仅是对interrupt()标识的一个判断,并不会影响标识发生任何改变(
- Swagger以及knife4j基本使用Swagger 介绍:官网:https://swagger.io/Swagger是一个规范和完整的框
- 废话不多说,直接上代码,小伙伴们仔细看 * 释吧。/*简单的复制 剪切 粘贴 功能 操作: &nb
- 前言:本文源码基于spring-framework-5.3.10。mvc是spring源码中的一个子模块!一、RequestMappingH
- 前言惰性计算(尽可能延迟表达式求值)是许多函数式编程语言的特性。惰性集合在需要时提供其元素,无需预先计算它们,这带来了一些好处。首先,您可以