java小记

抽象类:就是父类不能再new新的对象;不能实例化类,abstract 可以修饰类,也可以修饰方法;抽象类中一定有构造器,便于子类实例化的时候调用;开发中都会提供抽象类的子类,让子类对像实例化;
abstract修饰方法:无方法体,public abstract void dfs();只有方法的声明,无方法体;包含抽象方法的类一定是抽象类;反之抽象类中不一定都是抽象方法或者可以没有抽象方法;若子类重写了父类中抽象方法,此类方可实例化,若此类没有重写所有的抽象方法,则意味着子类也必须是抽象类;
abstract 不能用来修饰私有方法;静态方法static,不能共存。final,修饰的方法;final修饰的方法不能被重写,
抽象类的匿名子类
设计模式:**模板方法设计模式;**当功能内部一部分是确定的,一部分是不确定的,这时可以把不确定的部分暴露出去,让子类实现;比如说计算某段代码的执行时间;
Calendar.Month获取当前月份;
接口:java是单继承,通过接口实现多继承;接口是规范,定义的是一组规则,具有相同的特性,类可以实现多个;功能的扩展性变强了;
如何定义接口:定义接口中的成员:jdk7:全局常量public static final,书写时可以省略不写,抽象方法:public abstract;
**接口中不能定义构造器,**意为着接口不能实例化,类可以实现接口(implements);如果实现类覆盖了接口中所有的抽象方法,则此实现类可以实例化,否则不能实例化;接口与接口可以多继承
抽象类与接口有哪些异同:首先抽象类只可以单继承,但接口可以实现多继承,而且抽象类可以实现多个接口从而达到实现多继承的一个目的,相同点就是抽象类章既可以定义抽象方法也可以不定义抽象方法;接口中无构造器,接口只能能定义抽象方法;类中有构造器;都不能实例;创建接口的非匿名实现类的非匿名对象,创建接口的非匿名实现类的匿名对象3.创建接口的匿名实现类的非匿名对象;创建接口的匿名类的匿名对象
接口的应用,代理模式::为其他对象提供一种代理以控制对这个对象的访问;工厂模式::实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽起来,达到提高灵活性的目的;
java8中的接口的新特性:还可以定义静态方法
接口中定义的静态方法只能通过自己调用;通过实现类的对象调用接口中的默认方法;
如果实现类重写了接口中的默认方法,调用时,调用的重写之后的方法;如果子类(实现类)继承的父类和实现的接口中声明了同名同参数的方法那么子类在没有重写子方法的情况下调用的是父类的子方法;(类优先原则)如果实现类实现多个接口,而多个接口中定义了重名重参数的默认方法,那么实现类没有重写的情况下会报错,接口冲突;要求我们在实现类中必须重写子方法;如何在子类(实现类)中调用被重写的方法(默认的);default j接口名.super.方法名();
内部类的使用:可以分为成员内部类(静态内部类,非静态内部类),还有局部内部类(方法内,代码块内,构造器内)
成员内部类:类内可以定义属性方法构造器
作为外部类的成员也可以被static修饰;可以被四种不同的权限修饰;可以被final修饰,表示此类不能被继承;
如何实例化成员内部类的对象: P 静态的erson.Dog dog=new Person.Dog()
非静态的:Person .Bird bird-=p.new Dog()
如何在成员内部类中区分调用外部类的结构;开发中局部内部类的使用。在编译以后都会生成字节码文件;
外部类$内部类名.class

java的多态性:编译看左,运行看右,父类的引用指向子类的对象,当使用父类对象的方法调用方法时会调用子类中重写的方法;
向上转型, eg:Person p=new Man(); 接口也类似:就是通过 Usb u=new Flash();//这样的话也是flash实现了usb接口,这样的话调用的话就是实现了flash中的重写的方法;


版权声明:本文为weixin_43207987原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。