java基础——面向对象
java面向对象三大特征:封装、继承、多态;
继承是实现类复用的重要手段,除此之外,也可以通过组合关系来实现这种复用,相比较,使用继承实现复用,子类对象可以直接赋给父类变量,这个变量具有多态性,编程更加灵活,而利用组合关系实现复用则不具备这种灵活。 继承破坏了父类良好的封装性,尽量使用private,如果父类必须是public函数,而不能被子类重写,则用final修饰符;如果希望被子类重写但不希望由其他类访问,则用protected; 而且不要在父类构造器中调用被子类重写的方法;
多态:java引用变量有两个类型:一个是编译时的类型,一个是运行时的类型,编译时的类型由声明该变量时使用的类型决定,运行时的类型有实际赋值给该变量的对象决定,如果编译时类型和运行时类型不一致,就会出现所谓的多态。Base subBase=new Subclass(); subBase调用父类中被子类继承的方法时会显示子类的方法;
static是一个特殊的关键字,它可以用于修饰方法、属性等成员。static修饰的成员表面它是属于这个类共有的,而不是属性与该类的单个实例;
打印对象:String tostring(){return ...};
枚举类:j2SE新增enum关键字,用以定义枚举类,枚举类可以有自己的方法和属性,可以实现一个或者多个接口,也可以定义自己的构造器。一个java源文件最多只能定义一个public访问权限的枚举类,且该java源文件也必须和该枚举类的类名相同。 枚举类的构造器只能使用private访问控制符;枚举类的所有实例必须在枚举类中显示列出,否则这个枚举类将永远都不能产生实例,列出实例时,系统自动添加public static final修饰;所·有的枚举类都提供了一个values方法,该方法可以很方便地遍历所有地枚举值。
SeasonEnum seasonnum=Enum.valueOf(SeasonEnum.class, "SUMMER"); 通过Enum的valueOf方法来获取指定枚举类的枚举值
public enum SeasonEnum { SPRING,SUMMER,FALL,WINTER; }
public class TestNum { public void judge(SeasonEnum s) { switch(s) { case SPRING:System.out.println("穿暖花开");break; case SUMMER:System.out.println("烈日炎炎");break; case FALL:System.out.println("秋高气爽");break; case WINTER:System.out.println("围炉赏雪");break; } } public static void main(String args[]) { for(SeasonEnum s:SeasonEnum.values()) { System.out.println(s); } TestNum testNum=new TestNum(); testNum.judge(SeasonEnum.FALL); } }
对象与垃圾回收:垃圾回收机制只负责回收堆内存中对象,不会回收任何物理资源。垃圾回收机制回收任何对象之前,总会先调用它的finalize方法,该方法可能使该对象重新复活,从而导致垃圾回收机制取消回收。强制系统垃圾回收有如下两个方法:1、调用System类的gc() 2、调用Runtime对象的gc()
Runtime.getRuntime().gc();