小朋友学Java(6):封装

面向对象有三大特征:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。 本节讲封装。

程序1

class Woman {
    private String name;
    private int age;
    private Man husband;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
    public void setHusband(Man husband) {
        this.husband = husband;
    }
    public Man getHusband() {
        return husband;
    }       
}
public class Man {
    private String name;
    private int age;
    private Woman wife;
    public void setName(String Name) {
        this.name = Name;
    }
    public String getName() {
        return this.name;
    }
    public void setAge(int Age) {
        this.age = Age;
    }
    public int getAge() {
        return this.age;
    }
    public void setWife(Woman wife) {
        this.wife = wife;
    }
}
class Test {
    public static void main(String[] args) {
        Woman w = new Woman();
        w.setName("Han Meimei");
        w.setAge(25);
        System.out.println("My name is " + w.getName());
        System.out.println("My age is " + w.getAge());
        Man m = new Man();
        m.setName("Li Lei");
        m.setAge(26);
        m.setWife(w);
        w.setHusband(m);
        System.out.println("My husband is " + w.getHusband().getName());
        System.out.println();
        System.out.println("My name is " + m.getName());
        System.out.println("My age is " + m.getAge());
        System.out.println("You don't know whether I have wife or not!");
    }
}

运行结果:

分析: 因为Li Lei不想别人访问他的老婆,所以将wife封装起来,不提供getWife()这个方法。 (小朋友看到这里可能会笑)

程序2

public class J {
    public static void printf(String str) {
        System.out.println(str);
    }
    public static void cout(String str) {
        System.out.println(str);
    }
}
class JTest {
    public static void main(String[] args) {
        J.printf("Hello World!");
        J.cout("Hello World!");
    }
}

运行结果:

分析: 有些小朋友可能会觉得,C语言中的printf和C++中的cout,比java中的System.out.println要方便。所以这里咱们也封装出printf和cout,实现打印的目的。 (小朋友看到这里应该会很高兴)

当然,这只是举个例子罢了,真正编写Java代码,建议用Java默认提供的System.out.println。

原文发布于微信公众号 - 海天一树(gh_de7b45c40e8b)

原文发表时间:2018-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

JavaScript 正则表达式上——基本语法

JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串

7210
来自专栏java学习

请问你知道什么是栈吗?

1.1栈的概念及记本操作 栈(stack)又称堆栈,是限制在表的一端进行插入和删除的线性表。其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行...

32480
来自专栏算法修养

PAT 甲级 1060 Are They Equal

1060. Are They Equal (25) 时间限制 50 ms 内存限制 65536 kB 代码长度限制 16000 B ...

32350
来自专栏机器学习入门

挑战程序竞赛系列(89):3.6平面扫描(3)

挑战程序竞赛系列(89):3.6平面扫描(3) 传送门:POJ 3292: Rectilinear polygon 题意参考hankcs: http://w...

21250
来自专栏cmazxiaoma的架构师之路

Java数据结构和算法(2)--《Java数据结构和算法》第二版 Robert lafore第二章【数组】编码作业

21630
来自专栏Hongten

java中的移位运算符:<<,>>,>>>总结

value >>> num     --   num 指定要移位值value 移动的位数。

23450
来自专栏小古哥的博客园

读书笔记-JavaScript面向对象编程(二)

第5章 原型 5.1 原型属性(所有函数拥有一个prototype属性,默认为空对象)   5.1.1 利用原型添加方法和属性 function Gadget(...

44980
来自专栏LeetCode

LeetCode 738. Monotone Increasing Digits

这是我开始选择的方法,非常直白,但是直白简单的方法往往不是最佳的解法,提交到LeetCode上,给我抛出一个超时,可见效率有多低。首先写一个函数,判断一个数是否...

15500
来自专栏Bingo的深度学习杂货店

Q503 Next Greater Element II

Given a circular array (the next element of the last element is the first elemen...

33660
来自专栏自学笔记

Data Structure_数组_栈_队列_链表_霍夫曼数组栈队列链表哈夫曼

这就表示一个数组,这个数组有八个元素存放。对于元素的获取,主要就是通过下标获取,所以索引对于数组是很重要的,这个索引可以是有意义的,也可以是没有意义的。比如ar...

8220

扫码关注云+社区

领取腾讯云代金券