Java学习学习之路0801<复习>(抽象类、日期Date、接口)
2015-08-16 16:38
639 查看
接口、抽象类
接口 抽象类 内部类 局部类 匿名内部类抽样方法 有abstract修饰,没有方法体的方法
抽象类 有abstract修饰,不能创建对象,没有实例化
有抽象方法的类一定是抽象类,有抽象类不一定有抽象方法
接口 :interface全部是抽象方法和常量,但不用abstract修饰,里面的属性只能是常量
实现接口 implements 可以实现多个接口
内部类 类内写的类 局部类 方法中写的类
匿名内部类 隐藏了名称在方法内部的声明的类
/** *Animal类 */ public abstract class Animal { public abstract void speak(); public void run(){ System.out.println("run"); } }
public class Bird extends Animal implements Fly,Run { @Override public void run() { System.out.println("用脚跑"); } @Override public void fly() { System.out.println("用翅膀飞"); } @Override public void speak() { } }
public class Cat extends Animal{ public void speak() { // TODO Auto-generated method stub System.out.println("喵喵喵"); } public void run(){ System.out.println("用腿跑"); } }
public interface Run { public void run(); }
public class AnimalTest { public static void main(String[] args) { Cat cat=new Cat(); cat.speak(); cat.run(); } }
运行结果:
喵喵喵
用腿跑
public interface Fly { public void fly(); }
public class Bird extends Animal implements Fly,Run { @Override public void run() { System.out.println("用脚跑"); } @Override public void fly() { System.out.println("用翅膀飞"); } @Override public void speak() { } }
public class Plane implements Fly,Run{ @Override public void fly() { // TODO Auto-generated method stub System.out.println("用引擎飞"); } @Override public void run() { // TODO Auto-generated method stub System.out.println("用轮子跑"); } }
public class InterfaceTest { public static void main(String[] args) { Plane plane=new Plane(); Bird bird=new Bird(); plane.fly(); plane.run(); bird.fly(); bird.run(); } }
运行结果:
用引擎飞
用轮子跑
用翅膀飞
用脚跑
Date类
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTest { public static void main(String[] args) { Date date=new Date(); System.out.println("毫秒数"+date.getTime()); System.out.println("星期 月份 日期 时 分 秒 时区 年份"); System.out.println(date.toString()); Calendar rightnow=Calendar.getInstance(); System.out.print("毫秒数 "+rightnow.getTimeInMillis()); System.out.print(" 日期 "+rightnow.get(Calendar.DATE)); rightnow.set(Calendar.DATE,100); System.out.print(" 100天后日期 "+rightnow.get(Calendar.DATE)+" "+rightnow.get(Calendar.MONTH)); System.out.print(" 月份 "+rightnow.get(Calendar.MONTH)); System.out.print(" 今周在这个月中的天数 "+rightnow.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.print(" 年份 "+rightnow.get(Calendar.YEAR)+"\n"); SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String time=format.format(rightnow.getTime()); System.out.println(time); String s="2015年11月08日 16:01:13"; try { Date second=format.parse(s);//将日期格式化改为毫秒数 System.out.println("100天后的毫秒数"+second.getTime()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
运行结果:
毫秒数1439713258652
星期 月份 日期 时 分 秒 时区 年份
Sun Aug 16 16:20:58 CST 2015
毫秒数 1439713258684 日期 16 100天后日期 8 10 月份 10 今周在这个月中的天数 2 年份 2015
2015年11月08日 16:20:58
100天后的毫秒数1446969673000
内部类
package jie0801; public class Student { private int age; private String name; public void study(int age,String name){ System.out.println("我今年"+age+"我是"+name+" "+"我正在学习"); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public class Pen{ String color; String name; public void write(String color,String name){ class Homework{ String object; public String getObject() { return object; } public void setObject(String object) { this.object = object; } public void homework(){ System.out.println("做作业"); } } Homework hw=new Homework(); hw.homework();//局部内部类只能在该方法内实例化以及使用,所有该方法外部不能访问该内部类, //但是该内部类可以访问当前代码块的常量以及外部类的所有的成员 System.out.println(Student.this.name+"用"+color+"的"+name+"写作业"+" 用的是"+this.name); } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getNamePen() { return name; } public void setNamePen(String namePen) { this.name = namePen; } } }
import jie0801.Student.Pen; public class StudentTest { public static void main(String[] args) { Student zhangsan=new Student(); zhangsan.setName("张三"); zhangsan.setAge(18); zhangsan.study(zhangsan.getAge(), zhangsan.getName()); Pen pen=zhangsan.new Pen(); pen.setColor("红色"); pen.setNamePen("钢笔"); pen.write(pen.getColor(),pen.getNamePen()); Ink ink1=new Ink() { @Override public String getInk() { // TODO Auto-generated method stub return "北京墨水"; } };//匿名内部类,当只使用一次这个类的对象时候使用。因为这个类没有名字,所以创建一次对象. Ink ink2=new Ink() { @Override public String getInk() { // TODO Auto-generated method stub return "北京墨水"; } }; System.out.println(ink1==ink2); System.out.println(ink1.equals(ink2)); } }
运行结果:
我今年18我是张三 我正在学习
做作业
张三用红色的钢笔写作业 用的是钢笔
false
false
面向接口编程
public interface Print { public void print(Paper paper,Ink ink); }
public class PrintHP implements Print{ @Override public void print(Paper paper,Ink ink) { // TODO Auto-generated method stub System.out.println("用惠普打印机"+"在"+paper.paper()+"纸张上用"+ink.getInk()+"打印"); } }
public class PrintOther implements Print{ @Override public void print(Paper paper,Ink ink) { // TODO Auto-generated method stub System.out.println("用其他打印机"+"在"+paper.paper()+"纸张上用"+ink.getInk()); } }
public interface Paper { public String paper(); }
public class PaperBeijing implements Paper{ @Override public String paper() { // TODO Auto-generated method stub return "A4"; } }
public class PaperOther implements Paper{ @Override public String paper() { // TODO Auto-generated method stub return "其他纸张"; } }
public interface Ink { public String getInk(); }
public class InkBeijing implements Ink{ @Override public String getInk() { // TODO Auto-generated method stub return "北京墨水"; } }
public class InkOther implements Ink{ @Override public String getInk() { // TODO Auto-generated method stub return "其他墨水"; } }
public class PrintTest { public static void main(String[] args) { Print print=PrinterFactor.getPrint(); // Print print=new PrintHP(); Ink ink=new InkBeijing(); Paper paper=new PaperBeijing(); print.print(paper, ink); } }
运行结果:用惠普打印机在A4纸张上用北京墨水打印
若用工厂模式:
public class PrinterFactor { public static Print getPrint(){ return new PrintHP(); } }
相关文章推荐
- 2015年华为提前招聘机试题--输出最大的三位数
- Eclipse 一直提示 loading descriptor for 的解决方法(转)
- Jedis存储Java对象--Java序列化为byte数组方式
- Hive启动报错无法找到class— java.lang.NoClassDefFoundError
- JavaWeb项目中WEB-INF目录下class文件自动生成以及显示
- ACM之java 输入输出优化
- struts2学习笔记(十二)多文件上传
- Java 中使用内存映射文件需要考虑的 10 个问题
- Java基础 笔记(2)
- Java基础 笔记(1)
- java.lang.AbstractMethodError: gnu.xml.dom.DomDocument.getXmlStandalone()Z
- 循序渐进学java 13种核心技术
- java中的异常机制(编译时异常)
- Java 实现的内容搜索工具
- [java] Add Digits 数字相加
- 二叉查找树 Java
- [Java][activiti]Activiti这个过程委托功能[getAssignee()与getOwner()差异]
- Servlet文件上传
- #笔记#圣思园 JavaWeb 第78讲——JSON库,异步调用
- JAVA 设计模式 - 原型模式