企业展示型网站建设,广州网站设计实力乐云seo,国内十大4a广告公司,网站开发工作程序怎么写------- android培训、java培训、期待与您交流#xff01; ---------- 封装 匿名函数 2--匿名对象使用方式一#xff0c;当对象的方法只调用一次时#xff0c;可以用匿名对象完成#xff0c;这样写比较简单#xff0c;如果对一个对象进行多个成员必须个这个对象起个名字… ------- android培训、java培训、期待与您交流 ---------- 封装 匿名函数 2--匿名对象使用方式一当对象的方法只调用一次时可以用匿名对象完成这样写比较简单如果对一个对象进行多个成员必须个这个对象起个名字 3--匿名对象使用方式二可以将匿名对象作为实际参数进行传递 4--void是一种返回类型代表没有具体返回类型的结果而构造函数根本不需要定义返回类型 构造函数 构造函数作用可以给对象初始化 因为现在任意一个对象就具有基本的属性 6--构造函数小细节当一个类没有定义构造函数是那么系统会给类加一个空值挡在类中自定义了构造函数后默认的函数就没有 7--构造函数在写法上有不同在运行上也不同构造函数在对象已建立就运行对象初始化、而一般方法是对象调用才执行给对象添加对象具备的功能 一个对象建立构造函数只运行一次而一般方法可被对象调用多次。 构造函数不可以使用return 8--什么时候该定义构造函数当分析事务具备以下特性或行为那么将这些类容定义在构造函数中 构造代码块 { System.out.println(dddddddddddddddddd); } 构造代码块就是没构造函数名 作用给对象进行初始化 对象一建立就运行优先于构造函数 构造代码块是给所有对象进行统一初始化 二构造函数式给对应的对象初始化 构造函数是可以私有化的 This This代表他所在函数所属对象的引用 那个对象调用thisthis就代表那个对象 就单说那个对象在调用this所在的函数this就代表那个对象 什么时候用this当定义类中功能时该函数内都要调用该函数的对象时这是用this来表示这个对象。但凡本类功能使用本类对象用this表示 构造函数之间调用只能用this语句 初始化的 动作要先执行 This语句只能定义子啊构造函数的第一行因为初始化先执行 Static 是一个静态 static 是一个修饰符修饰成员变量和方法 特点 随着类的加载而加载也就是静态随类的消失而消失 说明他的生命周期最长 优先于对象的存在被所有对象共享可以直接被类名所共享 实例变量生命周期岁对象消失而消失 静态方法只能访问静态成员 包括方法和变量非静态可以访问静态成员静态方法中不可以定义this和super关键字 因为静态优先于对象存在所以静态方法中不可以出现this 静态有利有弊利对对象共享的数据进行单独空间存储节省内存空间没有必要每个对象都存储一份 可以直接被类名调用 弊端声明周期太长访问出现局限性静态只能范文静态 什么时候定义静态变量或类呢 当对象中出现共享数据时该数据被静态所修饰该对象中的特有数据也就是说不是共享的要定义成非静态存在于堆内存中 什么时候定义静态函数呢 当功能内部没有访问到非静态数据或对象的特有数据那么该功能可以定义静态的 主函数定义 Public 代表该函数局限最大 Static 代表主函数随类的加载存在 Void 主函数没有具体的返回值 main 不是关键字是一个特殊的单词 可以被jvm识别 工具类 通常情况下工具类都是定义的静态方法 下面我们就制作这个工具栏的 说明书通过文档注释来说明 在类文件中/** 这是一个可以对数组进操作的工具类该类中提供了获取最值排序等功能 */ 要想把一个类生存帮助文档的话这个类必须是 公用的也就是说必须被public所修饰 如 public ArrayTool class 静态代码块 Static { } 对象初始化过程 先执行类中的 static代码块 如果有的haunted给类进行初始化 在堆内存中开辟空间分配内存地址 在堆内存中建立对象的特有属性并默认初始化 对属性进行显示初始化 对对象进行构造代码块的初始化 对对象进行对应的构造函数初始化 将内存地址赋给栈内存中的变量 设计模式 单列设计模式 解决一个类在内存只存在一个对象 保证对象唯一性 1为了避免其他程序过多的建立该类对象。先禁止头程序建立该类的对象 2我了让其他程序访问该类对象只好在本类中自定义一个对象 3我了方便其他程序对自定义对象的访问可以对外提供一些访问方式 对象存在堆里面 以上三步用代码体现 1将构造函数私有化 2在类中创建一个本类对象 3提供一个方法可以获取该对象 对于事物该怎么描述就怎么描述 当需要将该事物的对象保证在内存中唯一是就将以上三步都加上 列如代码 //单列设计模式一饿汉式 private static Student snew Student(); private student(){} public static Student getStudent() { return s; } 单列设计模式二懒汉式 class single { private static single snull; private single(){} if(snull) { //这表示只能有一个程序进来如果其他程序进来这就判断s不等于空 其他程序就进不来 //如果A进来 synchronized (single.class);//这句换是要求同步执行程序 public static singlg getInstance() { if (snull) --》A//A就在这里其他的就进不来对多走到synchronized这里 snew single(); return s; } } } 记住 定义单列时最好使用饿汉式。 继承 1提高代码的复用性 2让类与类之间产生的关系有了这个关系才有了多态的特性 注意 千万不要为了获取其他类的功能。为了简化代码而产生继承 必须是类与类之间有所属关系才可以继承 在java语言中java只支持单继承不支持多继承。因为多继承容易带来安全隐患当父类中定义了相同功能当功能相同时子类不确定应用哪一个 但是java保留了这种机制并用了另一种体现形式来完成表示多实现、 Java支持多层继承也就是一个继承体系如何使用一个继承体系中的功能呢 想要使用体系先查询体系父类的描述因为父类中定义的是该体系中共性的功能通过了解共性功能就可以知道该体系的基本功能那么这个体系就已经基本可以使用了。 在具体调用时要创建子类的对象为什么 1因为父类有可能不能创建对象 2创建子类对象可以使用跟多的 功能包括基本的也有特性的。 简单一句话就是查阅父类功能创建子类对象的使用功能 组合--聚集关系、 子父类中变量的特点 1变量 1.如果父类中出现非私有的成员变量时子类要访问本类中的变量用this 子类要访问父类中的同名变量用super Super和this使用几乎是一致的this代表是本类对象的引用super的代表父类对象的引用 子父类中的函数的特点覆盖 当子类出现和父类一样的函数时但子类对象调用该对象函数 会运行子类函数的类容 如同父类函数被覆盖一样。这种情况是函数的另一个特性重写覆盖 但子类继承父类沿袭了父类的功能到子类中 但子类虽然具备该功能但是功能的内容却和父类不一致 这时没有必要定义新功能而是使用覆盖特殊 保留父类的功能的定义并重写功能类容 覆盖 注意 子类覆盖父类必须保证子类权限大于等于父类权限才可以覆盖否则编译失败 覆盖必须要加关键之public 2静态只能覆盖静态 记住 重载只看同名函数的参数列表 重写子父类方法一模一样 子父类中的构造函数特点子类实例化过程 在子类中有一个隐藏的用法就是 zi { Super();调用父类构造函数 Zi() { } 在对子类对象进行初始化是父类 的构造函数也会运行那是因为子类的构造函数默认第一行有一天隐藏的语句super() Super会访问父类的空参数的构造函数子类所有的构造函数都有一个默认的 super 为什么子类一定要访问父类的构造函数 因为父类中数据子类可以获取所以子类在建立是需先查看父类如何对这些数据进行初始化的所以子类初始化时要先访问父类的构造函数 如果要访问父类指定的构造函数可以通过手动定义super语句的方式来指定 Super一定要定义在子类的构造函数的第一行 子类实例化过程 结论子类的所有的构造函数默认都会访问父类中空参数的构造函数 因为子类每一个构造函数的第一句都有一个隐藏的super当父类中没有空参数的构造函 数是子类必须手动通过super或者this语句形式来指定访问父类中的构造函数类的构造函数第一行也可以手动指定this语句来访问本类的构造函数 子类中至少会有一个构造函数会访问父类的构造函数 } Final 修饰类修饰的类不可以被继承修饰的函数不可以被覆盖 修饰的变量是一个常量只能赋值一次 被final修饰的类不可以被继承是为了避免被子类覆盖功能 Final class demo{ Void show(); } //这是错误的继承 Class sub extends demo{ } 被final修饰的变量时一个常量只能赋值一次既可以修饰成员变量又可以修饰局部变量 Final int x9 这是x终生为9了不能改变 注意当在描述事物一些数据的 出现值是固定的这是为了增强阅读都给这些值加上final Final就是为了要锁定常量值 如果要共享就在final前加static 被final定义的就必须要大写 抽象类 当多个类中出现相同功能但功能主体不同这是可以向上抽取这只抽取声明的方法定义的不 抽取功能主体 抽象就是看不懂 抽象类的特点 1抽象方法一定在抽象类中 2.抽象方法和抽象类必须被abstract所修饰 3.抽象类不可以用new创建对象因为调用抽象方法没意义 4.抽象类方法要被使用必须由子类复写所有抽象方法后建立子类对象调用 5.如果子类只覆盖部分抽象方法那么该子类还是一个抽象类 6. 抽象类可以强迫子类做一些事情 7.抽象类和一般类没有太大不同 8.该如何描述事物就如何描述这是在事物出现了看不懂的东西 9.这些事物功能需要明确出现但无法定义主体就通过抽象方法来表示 10.抽象类比一般类多了一个抽象方法就是在类中可以定义抽象方法也只能定义抽象方法 11.抽象类不可以实例化 12.特点 抽象类中可以不定义抽象方法这样做只是不让改类建立对象 模板方法模式 获取时间 system.currenttimemillis 当代吗完成优化后就可以解决这类问题 这种方式模板方法设计模式 什么是模板方法 定义功能是功能的一部分确定但有一部分不确定而确定的部分在使用不确定的部分那么着时就将不不确定的部分暴露了有该类子类去完成 接口 接口初期理解可以理解为一个特殊的抽象类 抽象类的方法都是抽象的那么该类可以通过接口的形式来表示 接口里面成员全是抽象的 接口在定义时格式 1接口中常见定义常量抽象方法 接口中成员都有固定修饰符 常量public static final 方法public abstract 接口中的成员都是 public的 接口是不可以常见对象的因为都是抽象方法 需要被子类实现 子类要把接口里的抽象方法全都覆盖后才能实例化 否则子类是个抽象类 接口可以被类多实现 一个类在继承一个类时还可以实现多个接口 类与接口之间的关系式实现关系 接口的特点 基本功能实现在类中扩展功能实现在接口中 多态 多态可也理解为事物存在的 多种形态 函数也具有多态 1 多态的体系 父类的引用指向了自己的类中对象 2多太的前提 必须是类与类之间的关系要么继承要么实现 通常还有一个就是存在覆盖 3 多态弊端 提高扩展性 但是只能使用父类的引用访问父类的成员 不能使用子类的特有属性 3多态的好处 大大的提高了程序的扩展性 多太的扩展性 abstract class Animal { public abstract void eat(); } class Cat extends Animal { public void eat() { System.out.println(吃鱼); } public void catchMouse() { System.out.println(抓老鼠); } } class Dog extends Animal { public void eat() { System.out.println(吃骨头); } public void kanjia() { System.out.println(看家); } } public static void main(String[] args) { //Cat cnew Cat(); //c.eat(); function(new Cat()); function(new Dog()); function(new Cat()); } public static void function(Animal a) { a.eat(); } 如果想要调用猫的 特有方法是如何操作 强制将父类的引用转换成子类类型 列如 Cat c (Cat)a; c.catchMouse(); 前往不要出现将父类对象转换成子类的类型 我们能转换的是父类应指向自己的子类对象时gia可以被提升也可以 强制转换 多态始终都是子类对象在变化 多态成员函数非静态的特点 在编译时引用变量所属的类中是否所有调用的方法 如果有 编译通过没有则编译失败 在运行时参阅对象所属的类中是否有调用的方法 总结成员函数在多态调用时编译看左边运行看右边 在多态中静态成员函数的特点无论编译和运行都参考左边 Object 是所有对象的根类 Object 类中已经提出对对象是否相同的比较方法 内部类 非静态内部类不能定义静态函数 内部类的访问规则可以直接访问外部类的成员包括私有 2外部类要访问内部类必须建立内部类对象 内部类可以被私有化外部类觉得不能被私有化 之所以可以直接访问外部类的成员是因为内部类有一个外部类的引用 格式 外部类名、this 访问格式当内部类定义在外部类的成员位置上而且私有可以再外部其他类中 可以直接建立 对象 格式外部类名内部类名 变量名外部类对象内部类对象 outer.inner innew outer.inner(); in.function(); 当内部类在成员位置上就可以被成员修饰符所修饰 Private 将内部类在外部类的进行封装。 当内部类被静态修饰后只能直接访问外部类中的静态成员出现了访问局限 在外部其他类如何直接访问静态内部类呢 new outer.inner().function();来直接访问内部类的非静态成员 在外部其他类如何直接访问非静态成员呢 outer.inner().function(); 注意当内部类中定义静态成员该内部类必须是静态的 当外部类中的静态方法访问内部类是内部类也必须是静态的 内部类的作用就是能直接访问外部类的事物 内部类定义局部是不可以被成员修饰 可以直接访问外部类中的成员因为还持有外部类中的引用 但是不可一访问他所在的局部中的变量只能访问被final修饰的局部变量 class Outer { int x 9; void method(final int a) { final int y4; class inner { void function() { System.out.println(ay); } } new inner().function(); } } class innerobject { public static void main(String[] args) { new Outer().method(5); new Outer().method(6); } } 匿名内部类就是内部类的public void run(){ for(int x0;x100;x) { System.out.println(Thread.currentThread().getName()..x); } }式 2定义匿名内部类的前提内部类必须继承一个类 或者实现一个接口 匿名类 的格式写法 new 父类或者借口(){定义子类内容} class { public static void main(String[] args) { System.out.println(Hello World!); } } abstract class Absdemo { abstract void show(); } class outer { int x3; public void function() { //这就是创建匿内部名类 new AbsDemo() { void show() { System.out.println(xx); }.show();//调用成员方法 } } } 5.匿名内部类中定义的方法最好不要超过三个。 转载于:https://www.cnblogs.com/anxianjie/archive/2013/03/07/2948145.html