安装wordpress到搭建服务器广州网站优化公司

当前位置: 首页 > news >正文

安装wordpress到搭建服务器,广州网站优化公司,做网站哪家公司,湖南人文科技学院宿舍今天接着学习类和对象(苦笑)(苦笑)(苦笑)

  1. 封装 1.1 封装的概念 面向对象程序三大特性#xff1a;封装、继承、多态。 而类和对象阶段#xff0c;主要研究的就是封装特性。 何为封装呢#xff1f;简单来说就是套壳屏蔽细节。 举例#xff1a;对于计算机使用者而言封装、继承、多态。 而类和对象阶段主要研究的就是封装特性。 何为封装呢简单来说就是套壳屏蔽细节。 举例对于计算机使用者而言不用关心内部核心部件 比如主板上线路是如何布局的CPU内部是如何设计的等 用户只需要知道怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。 因此计算机厂商在出厂时在外部套上壳子将内部实现细节隐藏起来 仅仅对外提供开关机、鼠标以及键盘插孔等 让用户可以与计算机进行交互即可。 封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行交互 2.2 访问限定符 Java中主要通过类和访问权限来实现封装 类可以将数据以及封装数据的方法结合在一起 更符合人类对事物的认知 而访问权限用来控制方法或者字段能否直接在类外使用。 Java中提供了四种访问限定符 比如 public可以理解为一个人的外貌特征谁都可以看得到 default: 对于自己家族中(同一个包中) 不是什么秘密 对于其他人来说就是隐私了 private只有自己知道其他人都不知道 public class UnderGraduate {private int height;//身高private int weight;//体重public String gender;//性别public String specialty;//专业int classandgrade;//年级和班级 –default属性public UnderGraduate(int height,int weight,String gender,String specialty,int classandgrade){this.height height;this.weight weight;this.gender gender;this.specialty specialty;this.classandgrade classandgrade;}public void Sleep(){System.out.println(Slepp~~~~);}public void Forget(){System.out.println(Forget~~);}public void Eat(){System.out.println(Eat~~);}public class TestUndergraduate{public static void main(String[] args) {UnderGraduate g1 new UnderGraduate(173,59,man,computer scicence and technology,241);System.out.println(g1.height);// private属性只能在Computer类中访问不能被其他类访问System.out.println(g1.weight);// private属性只能在Computer类中访问不能被其他类访System.out.println(g1.gender); // public属性 可以任何其他类访问System.out.println(g1.specialty); // public属性 可以任何其他类访问System.out.println(g1.classandgrade);// default属性只能被本包中类访问}}}3.3 封装扩展包 3.3.1 包的概念 在面向对象体系中提出了一个软件包的概念 即为了更好的管理类把多个类收集在一起成为一组称为软件包。 有点类似于目录。比如为了更好的管理电脑中的歌曲 一种好的方式就是将相同属性的歌曲放在相同文件下 也可以对某个文件夹下的音乐进行更详细的分类。 在Java中也引入了包包是对类、接口等的封装机制的体现 是一种对类或者接口等的很好的组织方式 比如一个包中的类不想被其他包中的类使用。 包还有一个重要的作用 在同一个工程中允许存在相同名称的类只要处在不同的包中即可。 3.3.2 导入包中的类 Java 中已经提供了很多现成的类供我们使用. 例如Date类可以使用 java.util.Date 导入 java.util 这个包中的 Date类. public class Test {public static void main(String[] args) {java.util.Date date new java.util.Date();// 得到一个毫秒级别的时间戳System.out.println(date.getTime());} }但是这种写法比较麻烦一些, 可以使用 import语句导入包 import java.until.Date;// 得到一个毫秒级别的时间戳public static void main(String[] args) {Date date new Date();System.out.println(date.getTime());}如果需要使用 java.util 中的其他类, 可以使用 import java.util.* import java.util.; public class Test {public static void main(String[] args) {Date date new Date();// 得到一个毫秒级别的时间戳System.out.println(date.getTime());} }但是我们更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况 import java.util.; import java.sql.; public class Test {public static void main(String[] args) {// util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错Date date new Date();System.out.println(date.getTime());} } // 编译出错 Error:(5, 9) java: 对Date的引用不明确java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配在这种情况下需要使用完整的类名 import java.util.; import java.sql.; public class Test {public static void main(String[] args) {java.util.Date date new java.util.Date();System.out.println(date.getTime());} }可以使用import static导入包中静态的方法和字段 import static java.lang.Math.; public class Test {// 静态导入的方式写起来更方便一些public static void main(String[] args) {double x 48;double y 55;double result sqrt(pow(x,2)pow(x,2));System.out.println(result);}
    }3.3.3 自定义包 基本规则: 在文件的最上方加上一个 package 语句指定该代码在哪个包中. 包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式 (例如 com.xiaoxin.demo1 ).包名要和代码路径相匹配. 例如创建 com.xiaoxin.demo1 的包, 那么会存在一个对应的路径 com/xiaoxin/demo1 来存储代码. 如果一个类没有 package 语句, 则该类被放到一个默认包中. 操作步骤 在 IDEA 中先新建一个包: 右键 src - 新建 - 包 在弹出的对话框中输入包名, 例如 com.xiaoxin.demo1 在包中创建类, 右键包名 - 新建 - 类, 然后输入类名即可 此时可以看到我们的磁盘上的目录结构已经被 IDEA 自动创建出来了 同时我们也看到了, 在新创建的 Test.java 文件的最上方, 就出现了一个 package 语句
    3.3.4 包的访问权限控制举例 UnderGraduate类位于com.xiaoxin.demo包中 public static class UnderGraduate {private int height;//身高private int weight;//体重public String gender;//性别public String specialty;//专业int classandgrade;//年级和班级 –default属性public UnderGraduate(int height,int weight,String gender,String specialty,int classandgrade){this.height height;this.weight weight;this.gender gender;this.specialty specialty;this.classandgrade classandgrade;}public void Sleep(){System.out.println(Slepp
    ~~);}public void Forget(){System.out.println(Forget~~);}public void Eat(){System.out.println(Eat~~~~);} TestUndergraduate位置com.xiaoxin.demo1包中 public class TestUndergraduate{public static void main(String[] args) {Teat.UnderGraduate g1 new Teat.UnderGraduate(173,59,man,computer scicence and technology,241);//System.out.println(g1.height);// private属性只能在类中访问不能被其他类访问//System.out.println(g1.weight);// private属性只能在类中访问不能被其他类访System.out.println(g1.gender); // public属性 可以任何其他类访问System.out.println(g1.specialty); // public属性 可以任何其他类访问//System.out.println(g1.classandgrade);// default属性只能被本包中类访问}注意如果去掉UnderGraduate类之前的public修饰符代码也会编译失败 3.3.5 常见的包 java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。java.lang.reflect:java 反射编程包;java.net:进行网络编程开发包。java.sql:进行数据库开发的支持包。java.util:是java提供的工具程序包。(集合类等) 非常重要java.io:I/O编程开发包。
  2. stiac 成员 2.1 学生类 学生类实例化三个对象s1、s2、s3每个对象都有自己特有的名字、性别年龄学分绩点等成员信息这些信息就是对不同学生来进行描述如下所示 public class Student{// …public static void main(String[] args) {Student s1 new Student(xiaoxin,boy,19,59);Student s2 new Student(HYZS,girl,18,99);Student S3 new Student(Tsing,girl,18,100);}2.2 stiac 修饰成员变量 Student类中定义的成员变量每个对象中都会包含一份(称之为实例变量)因为需要使用这些信息来描述具体的学生。而现在要表示学生上课的教室这个教室的属性并不需要每个学生对象中都存储一份而是需要让所有的学生来共享。在Java中被static修饰的成员称之为静态成员也可以称为类成员其不属于某个具体的对象是所有对象所共享的。 public class Student {public String name;public String gender;public int age;public int score;public static String classroom JK241;//…………………………public static void main(String[] args) {Student s1 new Student(xiaoxin,boy,19,59);Student s2 new Student(HYZS,girl,18,99);Student s3 new Student(Tsing,girl,18,100);// 静态成员变量可以直接通过类名访问System.out.println(Student.classroom);System.out.println(s1.classroom);System.out.println(s2.classroom);System.out.println(s3.classroom);} }2.3 stiac 修饰成员方法 public class Student {public String name;public String gender;public int age;public int score;public static String classroom JK241;//………………………… }public class TestStudent{public static void main(String[] args) {System.out.println(Student.classroom);}}编译失败 Error:(10, 35) java: classRoom 在 extend01.Student 中是 private 访问控制public class Student {public String name;public String gender;public int age;public int score;public static String classroom JK241;//…………………………public static String getclassroom(){return classroom;} }public class TestStudent{public static void main(String[] args) {System.out.println(Student.getclassroom());}}public static String getClassRoom(){System.out.println(this);return classRoom; }// 编译失败Error:(35, 28) java: 无法从静态上下文中引用非静态 变量 thispublic static String getClassRoom(){age 1;return classRoom; }// 编译失败Error:(35, 9) java: 无法从静态上下文中引用非静态 变量 agepublic static String getClassRoom(){doClass();return classRoom; } // 编译报错Error:(35, 9) java: 无法从静态上下文中引用非静态 方法 doClass()2.4 stiac 成员变量初始化 注意静态成员变量一般不会放在构造方法中来初始化 构造方法中初始化的是与对象相关的实例属性 静态成员变量的初始化分为两种就地初始化 和 静态代码块初始化。 就地初始化 就地初始化指的是在定义时直接给出初始值 public class Student {public String name;public String gender;public int age;public int score;public static String classroom JK241;//…………………………………… }静态代码块初始化
  3. 代码块 3.1 代码块的概念代码块的类型 使用 {} 定义的一段代码称为代码块。 根据代码块定义的位置以及关键字又可分为以下四种 普通代码块构造块静态块同步代码块后续多线程部分再学习 3.2 普通代码块 普通代码块定义在方法中的代码块 public static void main(String[] args) {{ //直接使用{}定义普通方法块int x 10;System.out.println(x:x);}int x2 100;System.out.println(x2:x2);}这种用法较少见 3.3 构造代码块 构造块定义在类中的代码块 (不加修饰符)。 也叫实例代码块。构造代码块一般用于初始化实例成员变量 public class Student {//实例成员变量public int age;public int score;public String gender;public String name;public int classandgrade;public Student(){System.out.println(I am a computer major student);}//实例代码块{this.score 59;this.name xiaoxin;this.gender boy;this.age 19;this.classandgrade 241;System.out.println(I am computer major student);}public void show(){System.out.println(namenamegender:genderage:ageclassandgrade:classandgrade);}public class Main{public static void main(String[] args) {Student student new Student();student.show();}} }3.4 静态代码块 使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量 // 静态代码块static{classandgrade 241;System.out.println(I am a computer major student);}静态代码块不管生成多少个对象其只会执行一次静态成员变量是类的属性因此是在JVM加载类时开辟空间并初始化的 如果一个类中包含多个静态代码块在编译代码时 编译器会按照定义的先后次序依次执行(合并)实例代码块只有在创建对象时才会执行
  4. 内部类 当一个事物的内部还有一个部分需要一个完整的结构进行描述 而这个内部的完整的结构又只为外部事物提供服务 那么这个内部的完整结构最好使用内部类。 在 Java 中可以将一个类定义在另一个类或者一个方法的内部 前者称为内部类后者称为外部类。内部类也是封装的一种体现 public class OutClass {class InnerClass{} }// OutClass是外部类 // InnerClass是内部类定义在class 类名{}花括号外部的即使是在一个文件里 都不能称为内部类 public class A{}class B{} // A 和 B是两个独立的类彼此之前没有关系内部类和外部类共用同一个java源文件 但是经过编译之后内部类会形成单独的字节码文件 4.1 内部类的类型 内部类都可以在一个类的哪些位置进行定义 public class OutClass {// 成员位置定义未被static修饰 —实例内部类public class InnerClass1{}// 成员位置定义被static修饰 — 静态内部类static class InnerClass2{}public void method(){// 方法中也可以定义内部类 — 局部内部类几乎不用class InnerClass5{}} }根据内部类定义的位置不同一般可以分为以下几种形式 成员内部类(普通内部类未被static修饰的成员内部类 和 静态内部类 被static修饰的成员内部类)局部内部类(不谈修饰符)、匿名内部类 注意内部类其实日常开发中使用并不是非常多 大家在看一些库中的代码时候可能会遇到的比较多 日常开始中使用最多的是匿名内部类 4.2 成员内部类 在外部类中内部类定义位置与外部类成员所处的位置相同 因此称为成员内部类 4.2.1 实例内部类 即未被static修饰的成员内部类 public class OutClass {private int a;static int b;int c;public void methodA(){a 10;System.out.println(a);}public static void methodB(){System.out.println(b);}// 实例内部类未被static修饰class InnerClass{int c;public void methodInner(){// 在实例内部类中可以直接访问外部类中任意访问限定符修饰的成员a 100;b 200;methodA();methodB();// 如果外部类和实例内部类中具有相同名称成员时优先访问的是内部类自己的c 300;System.out.println©;// 如果要访问外部类同名成员时候必须外部类名称.this.同名成员名字OutClass.this.c 400;System.out.println(OutClass.this.c);}}public static void main(String[] args) {// 外部类对象创建 以及 成员访问OutClass outClass new OutClass();System.out.println(outClass.a);System.out.println(OutClass.b);System.out.println(outClass.c);outClass.methodA();outClass.methodB();System.out.println(实例内部类的访问); // 要访问实例内部类中成员必须要创建实例内部类的对象// 而普通内部类定义与外部类成员定义位置相同因此创建实例内部类对象时必须借助外部类// 创建实例内部类对象OutClass.InnerClass innerClass1 new OutClass().new InnerClass();// 上述语法比较怪异也可以先将外部类对象先创建出来然后再创建实例内部类对象OutClass.InnerClass innerClass2 outClass.new InnerClass();innerClass2.methodInner();}注意 外部类中的任何成员都可以在实例内部类方法中直接访问实例内部类所处的位置与外部类成员位置相同 因此也受public、private等访问限定符的约束在实例内部类方法中访问同名的成员时优先访问自己的 如果要访问外部类同名的成员必须外部类名称.this.同名成员 来访问实例内部类对象必须在先有外部类对象前提下才能创建实例内部类的非静态方法中包含了一个指向外部类对象的引用外部类中不能直接访问实例内部类中的成员 如果要访问必须先要创建内部类的对象 4.2.2 静态内部类 被static修饰的内部成员类称为静态内部类 public class OutClass {private int a;static int b;public void methodA(){a 10;System.out.println(a);}public static void methodB(){System.out.println(b);}// 静态内部类被static修饰的成员内部类static class InnerClass{public void methodInner(){// 在内部类中只能访问外部类的静态成员// a 100; // 编译失败因为a不是类成员变量b 200;// methodA(); // 编译失败因为methodB()不是类成员方法methodB();}}public static void main(String[] args) {// 静态内部类对象创建 成员访问OutClass.InnerClass innerClass new OutClass.InnerClass();innerClass.methodInner();} }注意 在静态内部类中只能访问外部类中的静态成员 如果确实想访问我们该如何做 创建静态内部类对象时不需要先创建外部类对象
    4.3 局部内部类 定义在外部类的方法体或者{}中 该种内部类只能在其定义的位置使用 一般使用的非常少此处简单了解下语法格式 public class OutClass {int a 10;public void method(){int b 10;// 局部内部类定义在方法体内部// 不能被public、static等访问限定符修饰class InnerClass{public void methodInnerClass(){System.out.println(a);System.out.println(b);}}// 只能在该方法体内部使用其他位置都不能用InnerClass innerClass new InnerClass();innerClass.methodInnerClass();}public static void main(String[] args) {// OutClass.InnerClass innerClass null; 编译失败} }注意 局部内部类只能在所定义的方法体内部使用不能被public、static等修饰符修饰编译器也有自己独立的字节码文件 命名格式外部类名字$数字内部类名字.class几乎不会使用 4.4 匿名内部类 蹲后续抽象与接口学习
  5. 对象的打印 public class Person {String name;String gender;int age;public Person(String name, String gender, int age) {this.name name;this.gender gender;this.age age;}public static void main(String[] args) {Person person new Person(Jim,男, 18);System.out.println(person);} } 如果想要默认打印对象中的属性该如何处理呢 答案重写toString方法即可 public class Person {String name;String gender;int age;public Person(String name, String gender, int age) {this.name name;this.gender gender;this.age age;}Overridepublic String toString(){return [name,gender,age];}public static void main(String[] args) {Person person new Person(Jim,男, 18);System.out.println(person);}} 总结 学习了封装概念访问限定符包的有关知识staic成员代码块内部类对象的打印 今天对类和对象的学习就到这里了如果感觉不错希望可以给博主点赞收藏和关注感谢大家的支持还有什么问题和建议可以在评论区评论拜拜。