1、APP内嵌H5的加载流程:
初始化webview->请求页面->下载数据->解析HTML->请求JS/CSS资源->dom渲染->解析JS执行->JS请求数据->解析渲染->下载渲染图片。
2、c#的abstract和virtual的用法和区别
abstract
1)、abstract方法,顾名思义,abstract方法就是抽象方法。
public abstract void Init();
2)、拥有抽象方法的类必须修饰一个abstract关键字从而变成一个抽象类;但是反过来,抽象类里面不一定要有抽象方法,比如我写了一个非抽象类,但是这个类我不想让人直接实例化,而只让人继承,我就可以把他变成一个抽象类,虽然他里面并没有抽象方法。形如:
abstract class TestAbstractSuper
3)、抽象类不能被实例化,只能被继承。
4)、抽象类的子类必须实现每个抽象方法。
5)、抽象类里面除了可以有抽象方法以外,也可以有普通的方法。抽象方法不能有主体,且继承类必须override此方法;
6)、抽象类的构造函数可以省略,编译器会自动加上,但是不能是一个抽象方法,而只能是一个普通的构造函数。
7)、一个普通类中包含有抽象方法,那么这个类一定要声明为抽象类(否则编译不通过)。普通类继承自抽象类时,必须实现抽象类的全部抽象成员。
使用场景:
抽象类:
1)、用来被其它类继承的,它代表一类对象的所具有的公共属性或方法。
2)、基类无法实现它,由继承我的类来实现。
抽象方法:
1)、父类(抽象或者不抽象)规定必须存在的方法的时候用abstract,子类必须实现(例如:鸟和人,抽象出动物类,具有行走方法等)。
小结:抽象类不可以直接实例化,他可以有n个(n>=0)抽象方法,这些抽象方法子类必须实现。
public abstract class BaseAbstractClass
{
public abstract void abstractMethod();
public void normalMethod()
{
Console.Write("nowmalMethod Print!!");
}
}
/// <summary>
/// 调用
/// BaseAbstractClass ac = new SonClass();
/// ac.abstractMethod();
/// ac.normalMethod();
/// </summary>
public class SonClass : BaseAbstractClass
{
public override void abstractMethod()
{
Console.Write("This is son abstractMethod!");
}
}
Virtual:
1、声明了virtual的方法无需去改动类的声明,他只在此方法上起到影响。
2、只有virtual的方法可以被子类override。
3、子类可以不ouverride父类的virtual方法,这种情况下他就像普通的父类方法一样。
小结:virtual关键字就是告诉子类,此方法可以被override,但非强制。