重学JAVA基础(五):面向对象
1.封装
import java.util.Date;
public class Human {
protected String name;
protected BirthDay birthDay;
protected String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public BirthDay getBirthDay() {
return birthDay;
}
public void setBirthDay(BirthDay birthDay) {
this.birthDay = birthDay;
}
public int getAge(){//封装方法
if(birthDay!=null){
Date nowDate = new Date(System.currentTimeMillis());
int year = nowDate.getYear()+1900;
int month = nowDate.getMonth()+1;
int day = nowDate.getDate();
int age = year - this.birthDay.getYear();
if(this.birthDay.getMonth()>month){
return age-1;
}else if(this.birthDay.getMonth()==month){
if(this.birthDay.getDay()>=day){
return age-1;
}
}
return age;
}
return 0;
}
public String toString(){
return "name:"+name+" sex:"+sex+" age:"+getAge();
}
public String toString(Human human){
return this+"";
}
public Human(){
}
public Human(String name,String sex) {
super();
this.name = name;
this.sex = sex;
}
public Human(String sex) {
super();
this.sex = sex;
}
public Human(String name,String sex,int year,int month,int day) {
super();
this.name = name;
this.birthDay = new BirthDay(year, month, day);
this.sex = sex;
}
}
public class BirthDay {
private int year;
private int month;
private int day;
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public BirthDay(){
}
public BirthDay(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
}
2.继承
public class Woman extends Human{
public Woman(){
super("Woman");
}
public Woman(String name){
super(name,"Woman");
}
public String toString(){
return " I am Woman,"+super.toString();
}
public String toString(Woman woman){
return woman+"";
}
}
public class Man extends Human{
public Man(){
super("Man");
}
public Man(String name){
super(name,"Man");
}
public String toString(){
return " I am Man,"+super.toString();
}
public String toString(Man man){
return man+"";
}
}
3.多态
public class TestOO {
public static void main(String[] args) {
Human man = new Man("man");
Human woman = new Woman("woman");
System.out.println(woman.toString(man));
System.out.println(man.toString(woman));
}
}
运行结果:
I am Woman,name:woman sex:Woman age:0
I am Man,name:man sex:Man age:0
重学JAVA基础(五):面向对象的更多相关文章
- 重学JAVA基础(八):锁的基本知识
1.线程状态 如上图,当我们新建一个线程,并start后,其实不一定会马上执行,因为只有操作系统调度了我们的线程,才能真正进行执行,而操作系统也随时可以运行其他线程,这时线程又回到可运行状态.这个过程 ...
- 重学JAVA基础(二):Java反射
看一下百度的解释: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息 ...
- 重学JAVA基础(一):PATH和CLASSPATH
我想大多数Java初学者都会遇到的问题,那就是怎么配置环境,执行java -jar xxx.jar 都会报NoClassDefFindError,我在最开始学习的时候,也遇到了这些问题. 1.PAT ...
- 重学JAVA基础(七):线程的wait、notify、notifyAll、sleep
/** * 测试thread的wait notify notifyAll sleep Interrupted * @author tomsnail * @date 2015年4月20日 下午3:20: ...
- 重学JAVA基础(六):多线程的同步
1.synchronized关键字 /** * 同步关键字 * @author tomsnail * @date 2015年4月18日 下午12:12:39 */ public class SyncT ...
- 重学JAVA基础(四):线程的创建与执行
1.继承Thread public class TestThread extends Thread{ public void run(){ System.out.println(Thread.curr ...
- 重学JAVA基础(三):动态代理
1.接口 public interface Hello { public void sayHello(); } 2.实例类 public class Hello2 { public void sayH ...
- 12天,这本《重学Java设计模式》PDF书籍下载量9k,新增粉丝1400人,Github上全球推荐榜!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言
- 重学 Java 设计模式:实战抽象工厂模式
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!
随机推荐
- oracle中v$sga_target_advice的用途
v$sga_target_advice:该视图可用于建议SGA大小设置是否合理. SELECT a.sga_size,--sga期望大小 a.sga_size_factor,-- ...
- jdbc 链接池
package cn.itcast.jdbc.datasourse; import java.sql.Connection;import java.sql.DriverManager;import j ...
- 概率图模型(PGM)学习笔记(二)贝叶斯网络-语义学与因子分解
概率分布(Distributions) 如图1所看到的,这是最简单的联合分布案例,姑且称之为学生模型. 图1 当中包括3个变量.各自是:I(学生智力,有0和1两个状态).D(试卷难度,有0和1两个状态 ...
- 【demo练习四】:WPF用户控件案例
首先,新建vs中“用户控件(WPF)”,右键项目名 =>"添加"按钮 => 选择“新建项”. 然后选择“用户控件(WPF)” => 起名字 => 点击“添加 ...
- Oracle -- 连接每行的内容
select wm_concat(message) from ( select rownum no, 'Case ''' || code || '''' || '' || chr(10) ...
- 一步一步学ios UITextView(多行文本框)控件的用法详解(五5.8)
本文转载至 http://wuchaorang.2008.blog.163.com/blog/static/48891852201232014813990/ 1.创建并初始化 创建UIText ...
- 【BZOJ4198】[Noi2015]荷马史诗 贪心+堆
[BZOJ4198][Noi2015]荷马史诗 Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅 ...
- asp.net mvc 中"未找到路径“/favicon.ico”的控制器或该控制器未实现 IController。"
FavIcon.ico是一个特殊的文件,它是浏览器请求一个网站时出现的.某些浏览器在书签和收藏夹中使用这个图标.在与这些图标相关的网站被打开时,某些浏览器也在标题栏或浏览器标签中中显示这个图标. 当一 ...
- 九度OJ 1150:Counterfeit Dollar(假美元) (分析、检验)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:485 解决:215 题目描述: Sally Jones has a dozen Voyageur silver dollars. Howev ...
- python venv虚拟环境
1 目的 给python应用一个独立的运行环境,独立于其它的python应用也独立于系统的python环境. 环境升级不影响其它应用. 避免包冲突. 2 创建方式 2.1 pycharm中创建 pro ...