目录

  • 包机制
    • 修饰符
      • protected修饰的成员只能在本包下以及其他包下的子类才能访问
    • final关键字
      • 常量
    • 枚举
    • 抽象类
    • 方法模板
    • 接口
      • 接口概述
      • 接口用法
      • 接口特点
      • 接口注意事项
    • 多态
      • 多态概述
    • 多态的优势
    • 案例
    • 练习1
    • 练习2
    • 练习3

包机制

package com.itheima.demo01package;import com.itheima.demo02modifier.PackageTest;/*** 包机制:* 1.同一个包中的类可以互相直接访问* 2.不同包下的类需要导包才能使用* 重点:* 3.如果需要使用不同包下类名相同的两个类,只能导入其中一个类* 另一个类需要使用全类名访问* @author shifan*/
public class DemoPackage01 {public static void main(String[] args) {PackageTest packageTest = new PackageTest();//全类名访问com.itheima.demo01package.cast.PackageTest packageTest1 = new com.itheima.demo01package.cast.PackageTest();}
}
/*第一个PackageTest*/
package com.itheima.demo01package.cast;public class PackageTest {}
/*第二个PackageTest*/
package com.itheima.demo02modifier;public class PackageTest {}

修饰符

protected修饰的成员只能在本包下以及其他包下的子类才能访问

package com.itheima.demo02modifier;/*** 权限修饰符:* public>protected>缺省>private*/
public class DemoModifierDad {private void privateMethod(){System.out.println("private");}void Method(){System.out.println("缺省");}protected void protectedMethod(){System.out.println("protected");}public void publicMethod(){System.out.println("public");}
}
package com.itheima.demo02modifier.cast;import com.itheima.demo02modifier.DemoModifierDad;
/*
测试protected访问权限
*/
public class DemoModifierSon extends DemoModifierDad {public static void main(String[] args) {DemoModifierDad dad = new DemoModifierDad();//注意:其他包下父类同样无法访问protected方法//dad.protectedMethod();报错DemoModifierSon son = new DemoModifierSon();//其他包下子类访问son.protectedMethod();}

final关键字

package com.itheima.demo03final;import java.util.Arrays;/*** final关键字表示最终,它的作用:* 1.final修饰类,表示该类为最终类,无法被继承* 2.final修饰方法,表示该方法为最终方法,无法被重写* 3.final修饰变量,则该变量只能被赋值一次* 注意:* 1.如果final修饰的是基本数据类型,则该类型的数据值无法被改变* 2.如果修饰的是引用数据类型,则其地址值无法被改变,但是它的内容可改变*/
public class DemoFinal01 {/*final修饰实例成员变量(几乎不用)*/private final String name = "法外狂徒";/*final修饰静态成员变量public static final 修饰的是常量*/public static final int AGE = 18;public static void main(String[] args) {/*final修饰局部变量*/final int a = 10;
//        a = 11;第二次赋值final int[] arr = {1,2,3};int[] arr1 = {2,3,4,5};System.out.println(Arrays.toString(arr));//引用数据类型的内容可以改变arr[0] = 0;System.out.println(Arrays.toString(arr));
//        arr = arr1;第二次赋值DemoFinal01 d = new DemoFinal01();
//        d.name = "张三";第二次赋值System.out.println(d.name);
//        AGE = 20;第二次赋值}
}

常量

package com.itheima.demo03final;import java.util.Random;/*** 常量:*     必须有初始化值*     常量命名规范:所有字母大写,单词之间用下划线连接*     编译时会进行“宏替换”,将常量全部替换为字面量*     好处和作用:可用于做系统配置信息,方便程序维护,提高可读性*     常用来做信息标志和分类,但入参值不受约束,不够严谨*     即不用常量名直接使用数据值同样能运行,一旦报错很麻烦*/
public class DemoFinal02Constant {public static final int UP = 1;public static final int DOWN = 2;public static final int LEFT = 3;public static final int RIGHT = 4;public static void main(String[] args) {int[] arr = {UP,DOWN,LEFT,RIGHT};Random r = new Random();int i = arr[r.nextInt(5)+1];switch (i){case UP:System.out.println("向上跳");break;case DOWN:System.out.println("向下跳");break;case LEFT:System.out.println("向左走");break;case RIGHT:System.out.println("向右走");break;default:break;}}
}

枚举

package com.itheima.demo04enum;/*** 枚举类:* 用于做信息的标志和信息的分类* 第一行必须罗列枚举类实例名称,全大写字母*/
public enum Orientation {UP,DOWN,LEFT,RIGHT;
}
package com.itheima.demo04enum;/*** 枚举类做信息分类*/
public class DemoEnum01 {public static void main(String[] args) {Orientation o = Orientation.UP;//switch已兼容枚举类switch (o){case UP:System.out.println("向上跳");break;case DOWN:System.out.println("向下跳");break;case LEFT:System.out.println("向左走");break;case RIGHT:System.out.println("向右走");break;default:break;}}
}

抽象类

package com.itheima.demo05abstract;/*** 抽象类:* 一个类中如果定义了抽象方法,则这个类必须申明为抽象类* 抽象类和抽象方法都是用abstract修饰,抽象方法只有方法签名没有方法体* 抽象类一般作为父类被继承* 一个类如果继承了抽象类,则必须重写所有抽象方法,否则也要申明为抽象类* abstract不能修饰变量、代码块、构造器* 普通类有的成员方法、成员变量、构造器抽象类都有* 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类* 抽象类无法实例化,因为抽象方法没有方法体*/public abstract class Card {private String userName;private double money;public Card(String userName, double money) {this.userName = userName;this.money = money;}public Card() {}public abstract void pay(double money);public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}
}
package com.itheima.demo05abstract;public class GoldCard extends Card {public GoldCard() {}public GoldCard(String userName, double money) {super(userName, money);}@Overridepublic void pay(double money) {System.out.println(getUserName()+",您本次消费"+money);System.out.println("您当前余额为:"+getMoney());double m = money * 0.8;System.out.println("您实际支付:"+ m);setMoney(getMoney()-m);}
}
package com.itheima.demo05abstract;public class SilverCard extends Card {@Overridepublic void pay(double money) {System.out.println(getUserName()+",您本次消费"+money);System.out.println("您当前余额为:"+getMoney());double m = money *0.85;System.out.println("实际支付:"+ m);setMoney(getMoney()-m);}public SilverCard(String userName, double money) {super(userName, money);}public SilverCard() {}
}
package com.itheima.demo05abstract;/**测试类*/
public class Demo01Abstract {public static void main(String[] args) {GoldCard c1 = new GoldCard("张三",10000);c1.pay(200);System.out.println(c1.getMoney());SilverCard s1 = new SilverCard("李四",5000);s1.pay(100);System.out.println(s1.getMoney());}
}

方法模板

package com.itheima.demo06template;/*** 方法模板模式:* 重复的部分定义在方法内,* 不一样的部分使用抽象方法交给子类去实现*/
public abstract class Student {public final void write(){System.out.println("\t\t《标题》");System.out.println("今天,我来介绍一下我的同桌");System.out.println(writeMain());System.out.println("我同桌也太(~ ̄(OO) ̄)ブ了");}public abstract String writeMain();
}
package com.itheima.demo06template;public class ChildStudent extends Student {@Overridepublic String writeMain() {return "我同桌没头脑";}
}
package com.itheima.demo06template;public class MiddleStudent extends Student {@Overridepublic String writeMain() {return "我同桌巨能吃";}
}

接口

接口概述

package com.itheima.demo07interface.interfaceimplements;/*** 接口类:* 接口体现的是一种规范,规范一定是公开的*/
public interface Demo01Interface {//成分特点:JDK8之前,接口中只能写常量和抽象方法/**常量注意:因为接口体现规范思想,规范默认公开,所以public static可以省略不写*/String name = "张三";//public static String name = "张三";/*** 抽象方法* 同样public abstract可以省略*/void walk();//public abstract void run();void eat();
}

接口用法

package com.itheima.demo07interface.interfaceimplements;/*** 接口的用法:* 被类实现,这种类称为实现类,关键字:implements* 格式:修饰符 class 实现类 implement 接口1,接口2,接口3...{}* 接口与接口直接可以多继承*/
public interface Demo02InterfaceImplements extends Demo01Interface {void run();
}
package com.itheima.demo07interface.interfaceimplements;/*** 一个类可以实现多个接口,接口之间用逗号隔开* Demo02InterfaceImplements接口继承了Demo01Interface接口* 所以Implement02Interface类同时实现了两个接口*/
public class ImplementInterface implements Demo02InterfaceImplements {@Overridepublic void walk() {}@Overridepublic void run() {}@Overridepublic void eat() {}}
package com.itheima.demo07interface.interfaceimplements;/*** 测试类*/
public class TestInterface {public static void main(String[] args) {ImplementInterface i = new ImplementInterface();i.eat();i.walk();}
}

接口特点

package com.itheima.demo07interface.interfacenewfeature;/*** 从jdk8开始,新增的方法,可以用方法体* 弥补了增加接口中抽象方法后所有实现类都要重写新抽象方法的不足*/
public interface Demo03InterfaceNewFeature {/*一、默认方法(实例方法)必须使用default修饰,默认使用public修饰接口创建不了对象,这个方法过继给了实现类,只能使用实现类创建的对象调用*/default void run(){System.out.println("跑");//play();}/*二、静态方法必须使用static修饰,接口的静态方法,只能使用接口名调用*/static void eat(){System.out.println("吃");}/*三、私有方法(实例方法)jdk9添加,必须使用private修饰,只在接口内部可以访问*//*private void play(){System.out.println("玩");}*/
}
package com.itheima.demo07interface.interfacenewfeature;
/**
测试类
*/
public class Test implements Demo03InterfaceNewFeature {public static void main(String[] args) {Test t = new Test();t.run();Demo03InterfaceNewFeature.eat();}
}

接口注意事项

package com.itheima.demo07interface.interfaceattention;/*** 接口注意事项:* 1.接口不能创建对象* 2.一个类实现多个接口,多个接口中有同样的静态方法不冲突,因为接口的静态方法只能用接口名调用* 3.一个类继承了父类又实现类接口,父类和接口中有同名方法,默认调用父类的* 4.一个类实现了多个接口,多个接口中存在同名的默认方法不冲突,但要重写这个方法* 5.一个接口继承多个接口没问题,但如果多个接口中存在规范冲突则不行*/
public class Demo04InterfaceAttention implements A,B{@Overridepublic void eat() {System.out.println("重写吃");}@Overridepublic void run() {}public static void main(String[] args) {Demo04InterfaceAttention d = new Demo04InterfaceAttention();d.eat();}
}

多态

多态概述

package com.itheima.demo08polymorphic.polymorphicfeature;/*** 多态:* 同类型的对象,执行同一个行为,会有不同的行为特征* 常见形式:* 1.父类类型 对象名 = new 子类构造器;* 2.接口 对象名 = new 实现类构造器;* 多态的前提:* 实现/继承关系、父类引用指向子类对象、子类重写父类方法*/
public class Test {public static void main(String[] args) {//父类引用指向子类对象Animal dog = new Dog();/*多态方法调用,编译看左边,左边存在该方法才能编译,运行看右边,实际执行还是执行右边的方法*///修勾跑得贼快dog.run();Animal tortoise = new Tortoise();//乌龟属实跑不动tortoise.run();/*变量调用:编译看左边,运行也看左边多态侧重行为的多态*///动物的名字System.out.println(dog.name);//调用修勾的名字:修勾名字System.out.println(((Dog) dog).name);//动物的名字System.out.println(tortoise.name);//调用乌龟的名字:乌龟名字System.out.println(((Dog) dog).name);}
}

父类:

package com.itheima.demo08polymorphic.polymorphicfeature;public class Animal {public String name = "动物名字";public void run(){System.out.println("动物都会跑");}
}

子类:

package com.itheima.demo08polymorphic.polymorphicfeature;public class Dog extends Animal {public String name = "修勾名字";@Overridepublic void run(){System.out.println("修勾跑得贼快");}}
package com.itheima.demo08polymorphic.polymorphicfeature;public class Tortoise extends Animal {public String name = "乌龟名字";@Overridepublic void run(){System.out.println("乌龟属实跑不动");}
}

多态的优势

package com.itheima.demo08polymorphic.polymorphicadvance;/*** 多态的优势:* 多态形式下,右边对象可以实现解耦合,方便拓展和维护* 定义方法的时候使用父类型作为参数,就可以接收该父类的一切子类对象,* 体现了多态的扩展性与便利* 多态的劣势:* 不能使用子类的独有方法,只能强制转型后使用* 强制转型前要使用instanceof关键字判断变量的真实类型* 即判断instanceof左边的变量指向的对象真实类型是否是右边的类型或其子类* 是则返回true,否则返回false*/
public class Test {public static void main(String[] args) {//后续业务行为随右边对象而改变,故后续代码无需修改//即将右边换成别的对象就行Animal dog = new Dog();go(dog);Animal tortoise = new Tortoise();go(tortoise);//修勾在看门uniqueMethod(dog);//乌龟在晒太阳uniqueMethod(tortoise);}/*** 使用父类型做参数,可接收一切子类对象* @param animal*/public static void go(Animal animal){System.out.println("开始跑!");animal.run();}/*** 判断animal变量的真实类型,并调用其独有方法* @param animal*/public static void uniqueMethod(Animal animal){if (animal instanceof Dog){((Dog) animal).lookDoor();}else if (animal instanceof Tortoise){((Tortoise) animal).underSun();}}
}

父类:

package com.itheima.demo08polymorphic.polymorphicadvance;public class Animal {public String name = "动物名字";public void run(){System.out.println("动物都会跑");}
}

子类:

package com.itheima.demo08polymorphic.polymorphicadvance;public class Dog extends Animal {public String name = "修勾";@Overridepublic void run(){System.out.println("修勾跑得贼快");}/*独有功能*/public void lookDoor(){System.out.println("修勾在看门");}
}
package com.itheima.demo08polymorphic.polymorphicadvance;public class Tortoise extends Animal {public String name = "乌龟";@Overridepublic void run(){System.out.println("乌龟属实跑不动");}/*独有功能*/public void underSun(){System.out.println("乌龟在晒太阳");}}

案例

测试类:

package com.itheima.demo08polymorphic.polymorphiccase;/*** 案例:* 电脑有两个USB接口,可以接入鼠标和键盘* 鼠标和键盘都能接入和拔出,鼠标还能点击,键盘可以敲字* 请用代码实现*/
public class Test {public static void main(String[] args) {Computer computer = new Computer();Mouse m = new Mouse("罗技鼠标");KeyBoard k = new KeyBoard("黑峡谷键盘");computer.install(m);computer.install(k);}
}

USB接口:

package com.itheima.demo08polymorphic.polymorphiccase;public interface USB {void connect();void unconnect();
}

电脑类:

package com.itheima.demo08polymorphic.polymorphiccase;public class Computer {/*定义一个USB安装入口*/public void install(USB u){u.connect();if (u instanceof Mouse){((Mouse) u).click();}else if(u instanceof  KeyBoard){((KeyBoard) u).write();}u.unconnect();}
}

键盘类:

package com.itheima.demo08polymorphic.polymorphiccase;public class KeyBoard implements USB {private String name;public void write(){System.out.println("写下一行情书");}public String getName() {return name;}public void setName(String name) {this.name = name;}public KeyBoard(String name) {this.name = name;}@Overridepublic void connect() {System.out.println(name + "连接成功");}@Overridepublic void unconnect() {System.out.println(name + "已断开连接");}
}

鼠标类:

package com.itheima.demo08polymorphic.polymorphiccase;public class Mouse implements USB {private String name;public Mouse() {}public void click(){System.out.println("双击666");}public String getName() {return name;}public void setName(String name) {this.name = name;}public Mouse(String name) {this.name = name;}@Overridepublic void connect() {System.out.println(name + "成功连接");}@Overridepublic void unconnect() {System.out.println(name + "已断开连接");}
}

练习1

测试类:

package com.itheima.exercises.exercise01;/*** 请使用代码描述:    *    奥迪车(Audi)都具有跑的功能,但是智能奥迪车(SmartAudi)除了具有跑的功能外,还具有自动泊车(automaticParking)和无人驾驶(automaticDrive)的功能!*    要求:使用多态形式创建对象*/
public class Exercise01 {public static void main(String[] args) {Audi audi = new Audi();audi.run();Audi smartAudi = new SmartAudi();((SmartAudi) smartAudi).automaticDrive();((SmartAudi) smartAudi).automaticParking();}
}

奥迪车类:

package com.itheima.exercises.exercise01;public class Audi {public void run(){System.out.println("奥迪车在行驶");}
}

智能奥迪车类:

package com.itheima.exercises.exercise01;public class SmartAudi extends Audi {public void automaticParking(){System.out.println("智能奥迪车在自动泊车");}public void automaticDrive(){System.out.println("智能奥迪车在自动驾驶");}
}

练习2

测试类:

package com.itheima.exercises.exercise02;import com.itheima.exercises.exercise02.domain.AirCondition;
import com.itheima.exercises.exercise02.domain.TV;/*** 请使用代码描述:* 我们平时的家用电器,都需要通电,然后开启,或者关闭,而且每个家用电器都有自己特殊的功能,比如:* 电视,除了通电之后的开启和关闭,还有播放电视剧的功能* 空调,除了通电之后的开启和关闭,还有制冷的功能* 要求:将电视和空调的抽取出来*/
public class Exercise02 {public static void main(String[] args) {TV t = new TV();t.tongdian();t.open();t.close();t.tvShow();System.out.println("===================================");AirCondition a = new AirCondition();a.tongdian();a.open();a.refrigeration();a.close();}
}

接口:

package com.itheima.exercises.exercise02.domain;public interface Sockets {void tongdian();
}

电器类:

package com.itheima.exercises.exercise02.domain;/*** 家用电器*/
public abstract class Appliance implements Sockets{public abstract void open();public abstract void close();@Overridepublic void tongdian() {System.out.println("通电");}
}

空调类:

package com.itheima.exercises.exercise02.domain;public class AirCondition extends Appliance {@Overridepublic void open() {System.out.println("打开空调");}@Overridepublic void close() {System.out.println("关闭空调");}public void refrigeration(){System.out.println("制冷");}
}

电视类:

package com.itheima.exercises.exercise02.domain;/*** 电视类*/
public class TV extends Appliance{@Overridepublic void open() {System.out.println("打开电视");}@Overridepublic void close() {System.out.println("关闭电视");}public void tvShow(){System.out.println("播放电视剧");}
}

练习3

测试类:

package com.itheima.exercises.exercise03;/*** 水果都能被榨成汁,在现实生活中,我们需要一个榨汁机,* 往榨汁机中的装什么水果就被榨成什么果汁,请根据描述设计一个程序*/
public class Exercise03 {public static void main(String[] args) {FruitJuicing p = new Pear();FruitJuicing a = new Apple();Juicer juicer = new Juicer();juicer.squeez(a);juicer.squeez(p);}
}

接口:

package com.itheima.exercises.exercise03;
/*** 榨汁接口*/
public interface FruitJuicing {void juice();
}

苹果类:

package com.itheima.exercises.exercise03;public class Apple implements FruitJuicing {@Overridepublic void juice() {System.out.println("苹果被榨成汁了");}
}

梨类:

package com.itheima.exercises.exercise03;public class Pear implements FruitJuicing {@Overridepublic void juice() {System.out.println("梨被榨成汁了");}
}

榨汁机类:

package com.itheima.exercises.exercise03;public class Juicer {public void squeez(FruitJuicing fruit){if (fruit instanceof Apple){fruit.juice();}else if (fruit instanceof Pear){fruit.juice();}}
}
,请根据描述设计一个程序*/
public class Exercise03 {public static void main(String[] args) {FruitJuicing p = new Pear();FruitJuicing a = new Apple();Juicer juicer = new Juicer();juicer.squeez(a);juicer.squeez(p);}
}

接口:

package com.itheima.exercises.exercise03;
/*** 榨汁接口*/
public interface FruitJuicing {void juice();
}

苹果类:

package com.itheima.exercises.exercise03;public class Apple implements FruitJuicing {@Overridepublic void juice() {System.out.println("苹果被榨成汁了");}
}

梨类:

package com.itheima.exercises.exercise03;public class Pear implements FruitJuicing {@Overridepublic void juice() {System.out.println("梨被榨成汁了");}
}

榨汁机类:

package com.itheima.exercises.exercise03;public class Juicer {public void squeez(FruitJuicing fruit){if (fruit instanceof Apple){fruit.juice();}else if (fruit instanceof Pear){fruit.juice();}}
}

day19-java相关推荐

  1. day19 java数组的常用算法和排序

    1.冒泡排序法 2.选择排序法 3.二分查找 4.array常见工具类 以后补充

  2. Java基础day19

    Java基础day19 Java基础day19-IO流&Properties集合 1.IO流案例 1.1集合到文件数据排序改进版 1.1.1案例需求 1.1.2分析步骤 1.1.3代码实现 1 ...

  3. java自学之路-day19

    Day19 JDBC 概述 l  Java数据库连接 l  是一种执行SQL语句的java API l  可以为多种数据库提供统一访问 l  就是一组类和接口 l  是java访问数据库的规范 l  ...

  4. java day19【File类、递归】

    第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.2 构造方法 public File(String pat ...

  5. 【26天高效学习Java编程】Day19:60 多个实例讲解,彻底搞懂Java 多线程 【可查阅,可复习,可面试】

    本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...

  6. JSD-2204-续 配置中心-Nginx-Linux部署java项目-Day19

    1.续 配置中心 上次课我们完成了cart模块的数据库配置信息添加到nacos的操作 我们也删除了cart模块原有的连接数据库信息的配置 下面开始,我们尝试连接nacos配置中心,读取数据库配置信息, ...

  7. Day19 学习java(网络编程、正则表达式)

    网络编程 OSI七层 网络协议 TCP/IP 概述 传输层协议中有两个非常重要的协议: 传输控制协议TCP(Transmission Control Protocol) 用户数据报协议UDP(User ...

  8. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day19】—— 集合框架3

      大家好,我是陈哈哈,北漂五年.认识我的朋友们知道,我是非科班出身,半路出家,大学也很差!这种背景来北漂,你都不知道你会经历什么

  9. Java基础day18

    Java基础day18 Java基础day18-字节缓冲流&字符流 1.字节缓冲流 1.1字节缓冲流构造方法 1.2字节流复制视频 2.字符流 2.1为什么会出现字符流 2.2编码表 2.3字 ...

  10. java jdbc标签jsp_jsp+servlet+javabean+jdbc实现增删改查和分页功能 案例源码

    [实例简介] 客户管理案例 1.目的:总结JDBC,和Servlet JSP结合到一起. 2.开发中的一些小技巧. 3.客户管理平台功能 * 添加客户 * 查询所有的客户的信息 * 修改客户信息 * ...

最新文章

  1. 获得html元素自身的宽度
  2. 关于web.xml的格式
  3. java可比较的和比较器的区别_Java中Compareable和Comparator两种比较器的区别
  4. 图形处理(二)固定边界参数化
  5. 有趣设计工作室创始人段先洲:UI设计师的名利场
  6. win10系统中查找端口
  7. 非凸函数上,随机梯度下降能否收敛?能,但有条件,且比凸函数收敛更难
  8. 【网络与系统安全】关于SSL/TSL协议的分析
  9. java nio2 iocp_基于JDK7 NIO2的高性能web服务器实践之二(转)
  10. linux下log日志乱码_如何用 Linux 技巧大大提高工作效率?
  11. 前端学习(1394):多人管理项目14多人加密使用
  12. 从零开始学前端:定位 --- 今天你学习了吗?(CSS:Day17)
  13. PAT (Basic Level) Practice1011 A+B 和 C
  14. appStore苹果退款通知
  15. 运动会加油稿计算机学院150字,学校运动会加油稿150字10篇
  16. android开发 节省流量,流量节省程序模式  |  Android 开源项目  |  Android Open Source Project...
  17. java freemarker word导出 文字加图片双重循环 (经历无数坑)
  18. java程序RedisTempla往redis存key后在redis客户端获取不到key
  19. 数值分析——自适应辛普森积分
  20. onenote冲突服务器显示,ONENOTE同步分区失败,显示“正在等待另一个设备完成上载您的笔记”?...

热门文章

  1. 第4章 SIM卡锁定
  2. 苹果x重启方法_苹果手机iPhone没法发短信
  3. Unity3D教程:简单的动作游戏
  4. unity之NPC人物名称显示
  5. 清华大学计算机刘云鹏,清华在河南录取工作结束
  6. wincc7.5安装
  7. 对啊网初级会计3资产-1应收及预付款项
  8. 如何批量修改文件名中的一部分?
  9. excel文件格式校验
  10. 1984坐标 南半球北半球_动物穿越vs南半球