一、多态 多态概述:同一个对象,在不同时刻表现出来的不同形态。 多态前提: 1.有继承/实现关系 2.有子类方法重写 3.有父类引用指向子类对象 多态中成员访问特点: 成员变量特点—— 编译看左边,执行看左边 成员方法特点—— 编译看左边,执行看右边 But why? 方法被重写后,就会执行子类中被重写的方法内容。 弊端:多态中父类对象不能调用子类独有的方法。 多态的好处:简化代码的书写量,如下图: public static void main(String[] args) {
Animal a=new Cat();
Animal d=new Dog();
show(a);
show(d);
}
public static void show(Animal an){
an.eat();
if(an instanceof Dog){
Dog d=(Dog)an;//强制转换
d.watchHouse();//通过把父类转换成子类,再调用子类独有方法
}
if(an instanceof Cat){
Cat c=(Cat)an;//强制转换
c.catchMouse();//通过把父类转换成子类,再调用子类独有方法
}
}二、抽象类what is 抽象类? 抽象的事物,没有具体的对象表示,叫做抽象类,比如:动物类。 抽象类的方法特点: 1.抽象类中可以啥都没有 2.抽象方法必须在抽象类中 3.抽象子类中必须覆盖重写父类所有抽象方法 4.抽象类不能直接创建抽象类对象 抽象类的成员特点: 1.可以有成员变量,即可以常量,也可以变量。 2.有构造方法,作用是:用于子类访问父类构造方法,并初始化父类成员 3.可以有普通方法,也可以有抽象方法 三、接口特点: 1.用关键字 interface修饰 2.类实现接口用 implements表示 格式:public class 类名 implements 接口名{} 3.接口不能实例化 参照多态的方式进行实例化 4.接口的实现类 要么重写抽象类中所有抽象方法 要么是个抽象类 成员变量特点: 1.变量都是默认被final修饰的常量 2.方法都是抽象方法 3.接口没有构造方法
一、基本类型包装类随记:集合只能存储引用类型 作用:基本类型变成包装类,方便调用各种方法 Integer:概述:包装一个基本类型int的值,把基本类型int转换成包装类,便于各种操作. Integer integer = Integer.valueOf(100);
System.out.println(integer);//输出原值
Integer integer1 = Integer.valueOf("12345");
System.out.println(integer1);//输出12345,不能带字母
int和String相互转换:int--------String:
//Int转String
//方式一:拼接
int num=100;
String s=""+num;
System.out.println(s);//输出 (String类型)100
//方式二:用String调用valueOF()方法
String s2=String.valueOf(num);
System.out.println(s2);String--------int: 普遍方式如下:调用parseInt方法
String s="11111";
int i1 = Integer.parseInt(s);//String直接转int
System.out.println(i1);//输出11111拆箱和装箱:装箱: 基类------转成包装类
//装箱
int i=100;
Integer.valueOf(i);拆箱: 包装类------转成基类
//装箱
int i=100;
Integer.valueOf(i);
//拆箱
int b=Integer.valueOf(i);
System.out.println(b);自动拆装箱:
//自动装箱
Integer I=100;
//自动拆箱
int i=I;日期类:Date():当前时间 Date(long x):传入一个long值x(毫秒),则从1970 0时0分+传入的毫秒值开始 getTime和setTime:
Date d=new Date();
//获取当前毫秒数
long time = d.getTime();
System.out.println(time);
//获取当前毫秒数
long time2=System.currentTimeMillis();
d.setTime(time2);
System.out.println(time2);SimpleDateFormat: 可以按照指定的模板输出当前日期 Calendar:getInstance:获取日历字段667
Calendar c=Calendar.getInstance();//多态形式,
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
int date=c.get(Calendar.DATE);
int hour=c.get(Calendar.HOUR);
int min=c.get(Calendar.MINUTE);
System.out.println(year+"年"+month+"月"+date+"日"+hour+"时"+min+"分");
}
|