Java学习学习之路0801<复习>(抽象类、日期Date、接口)

接口、抽象类

接口 抽象类 内部类 局部类 匿名内部类
抽样方法 有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();       
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值