Java面向对象编程(封装/继承/多态)实例解析

作者:书思BookReflect 时间:2023-11-11 11:33:09 

本文主要介绍了面向对象的三大特征实例解析,下面看看具体内容。

封装

封装一个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

标签:java,面向对象
0
投稿

猜你喜欢

  • Java Fluent Mybatis 项目工程化与常规操作详解流程篇 上

    2022-08-28 16:47:28
  • 常见Android选项菜单样式集合

    2021-10-12 04:42:39
  • 详解用Spring Boot Admin来监控我们的微服务

    2022-02-12 15:18:03
  • C#将Json解析成DateTable的方法

    2022-11-19 20:10:42
  • c#继承与多态使用示例

    2021-11-24 16:48:33
  • 深入理解Spring事务的传播行为

    2022-08-31 11:25:21
  • 开源一个c# 新的雪花算法

    2022-01-20 16:08:56
  • Linux下g++编译与使用静态库和动态库的方法

    2023-06-21 13:41:46
  • 极简的Resty服务端和客户端RESTful框架

    2022-01-19 19:51:00
  • 详解Spring 中 Bean 的生命周期

    2023-09-13 14:55:57
  • javaweb实战之商城项目开发(三)

    2023-04-15 14:27:34
  • 一文带你熟练掌握Java中的日期时间相关类

    2022-01-21 00:42:54
  • C# [ImportDll()] 知识小结

    2022-09-15 07:42:18
  • Feign如何自定义注解翻译器

    2022-11-09 07:05:04
  • Android自定义控件的步骤

    2023-03-24 00:14:03
  • 带大家认识Java语法之泛型与通配符

    2021-06-04 06:14:46
  • java实现文件上传下载功能

    2021-11-26 17:19:05
  • SpringBoot整合Xxl-Job的完整步骤记录

    2021-08-08 20:47:16
  • C#实现异步编程的方法

    2022-03-01 22:43:27
  • Android MVP模式实战教程

    2023-09-05 13:16:54
  • asp之家 软件编程 m.aspxhome.com