您的位置:首页 > 编程语言 > Java开发

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: