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

网友投稿 282 2023-03-23


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……….登录成功

总结

以上就是本文关于Java面向对象编程(封装,继承,多态)实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:解析Java编程之Synchronized锁住的对象、Java语言面向对象编程思想之类与对象实例详解等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring定时任务中@PostConstruct被多次执行异常的分析与解决
下一篇:vue2里面ref的具体使用方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~