山西省建设厅入晋备案网站,深圳百度总部,八年级微机网站怎么做,信息图表设计网站一、类和构造方法(类和对象在百度百科已经有详细的介绍#xff0c;这里只做简单的描述以及帮助理解#xff1b;百度百科#xff1a;类和对象#xff0c;需要注意的是#xff0c;百度百科类和对象的举例中都是C#xff0c;书写格式不要和Java混淆#xff01;)什么是类这里只做简单的描述以及帮助理解百度百科类和对象需要注意的是百度百科类和对象的举例中都是C书写格式不要和Java混淆)什么是类什么是对象对象是对客观事物的抽象类是对对象的抽象。类是一种抽象的数据类型。它们之间的关系是对象是类的实例类是对象的模板。举个例子老师是对所有老师的总称李老师是老师行业里的一个老师。那么老师就可以理解为是类它是抽象的而李老师就可以理解为是对象他是老师这个类的一个实例。a)类public class Teacher{public string name;public int age;public static int numpublic void TeacherRank(){intgrade;}}一个类可以包含三种变量1、局部变量2、成员变量3、类变量(静态变量)1、局部变量顾名思义局部的变量,在方法或者语句块中被定义的变量在方法结束后变量就会自动销毁。如上代码中TeacherRank方法中的grade变量。2、成员变量定义在类中、方法之外的变量可以被类中的方法和语句块访问在创建对象的时候实例化。如上代码的name和age。3、类变量(静态变量)声明在类中、方法体之外用static修饰。如上代码中的num。b)构造方法在类中不得不提到构造方法每个类都有构造方法构造方法的名称必须与类同名一个类可以有多个构造方法然而在上文例程中并没有这个方法并没有看到和类同名的构造方法这是因为如果没有显式的定义构造方法的话编译器将会为该类提供一个默认构造方法public Teacher (){}。其次普通方法是用来定义对象具备的功能只能被对象调用且可以多次调用而构造函数是用于对象初始化所以定义的是对象在建立时应该具备的内容由Java虚拟机(JVM)调用且只在创建对象时候调用。那我们再修改上文代码加入构造方法public class Teacher{public string name;public int age;public static int numpublic Teacher (){}public Teacher (String name , Int age){this.name name;this.age age;}public void TeacherRank(){intgrade;}}二、对象对象是通过new className(类名)产生的在创建一个对象的时候至少要调用一个构造方法。例如Teacher MrLi new Teacher();或者Teacher MrLi new Teacher(“LiLei”,23);可以看出创建对象有三步声明、实例化、初始化。对应上面代码声明Teacher的一个叫MrLi的对象用关键字new来实例化再使用构造方法来初始化对象。三、访问权限控制为供类库开发人员向客户端程序员指明哪些是可用的、哪些是不可用的Java提供了访问权限修饰符按照权限大到小排序public、protected、无修饰词、private。在说明访问权限控制之前简单说明什么是包包就是一组类在单一的名字空间之下被组织在一起就像《Thinking in Java》一书中举的例子在Java的标准发布中有一个工具库被组织在java.util名字空间之下里面有很多的工具类那么java.util就是一个包。需要使用这些工具类的时候(拥有权限的情况下)需要使用import关键字将其导入或者直接在创建对象的时候指定包名如import java.util.ArrayList和java.util.ArrayList list new java.util.ArrayList()。1.public权限最大允许所有类访问但其他包下的类想要访问使用import关键字将其导入。2.Protected不可以被其他包使用可在本类、同包下以及继承类允许被访问。3.无修饰词只可以在本类、同包下允许被访问。4.private只在本类中允许被访问。四、重载(overload)为了方便理解重载举个现实交流的例子你去了你朋友家你朋友家非常大你想上厕所这时候你就会问“我想去方便一下你方便告诉我厕所在哪吗”句子中两个“方便”却有不同的意思。那么这两个“方便”就构成了重载。重载指的就是在一个类中除参数以外其他外部特征都一样的方法(方法名、返回值声明、修饰符)。最典型的例子就是上面提到的构造方法public Teacher (){}和public Teacher (String name , Intage){…}就构成了重载。当然凡是方法都可以构成重载。我们修改上面例程如下public class Teacher{…public Teacher (){}public Teacher (String name , Int age){…}publicTeacherRank(){…}publicTeacherRank(Int rank){…}}方法TeacherRank()和方法TeacherRank(Int rank)也构成重载。五、this关键字在例程中public class Teacher{public string name;public int age;…public Teacher (String name , Int age){this.name name;this.age age;}…}你会发现Teacher类中有name和age两个成员变量而Teacher (String name , Int age)方法中也有两个名字相同的局部变量那么问题来了在Teacher (String name , Int age)中我们如何区分哪个是成员变量的name和age哪个是局部变量的name和age呢为此有一个专门的关键字this。this关键字只能在方法内部使用表示对“调用方法的那个对象”的引用。那么答案非常明了了在上面例程中方法内this.name和this.age指的就是成员变量。因为类是通过对象来实现的this表示当前对象那么这里对象的name和age只能指的是那两个成员变量。既然this表示当前对象的引用那么自然就可以用this来实现构造器中调用构造器来达到避免重复代码。需要注意的是可以用this调用一个但是不能调用用两个而且this的调用必须写在第一行例程修改如下public class Teacher{public string name;public int age;…public TeacherRank(){…}public TeacherRank(String name){this.name name;}public Teacher (String name , Int age){this(name);this.age age;}…}六、static关键字static(静态)可以修饰变量、方法以及代码块被修饰的变量和方法分别可称为静态变量(类变量)和静态方法。a)静态变量(类变量)如public static int num 0静态变量会被所有对象共享同时局部变量不能被声明为static变量(这里需要说明的误区是static修饰之后不会影响访问权限。而且Java没有全局变量一说)。b)静态方法如public static voidnum(){…}静态方法不依附于任何对象就可以被访问正是因为其不依附于任何对象所以不能访问类非静态方法/变量(因为非静态的是必须依附在对象上)相反的类非静态方法是可以访问静态方法/变量的。c)static修饰代码块修改之前的例程如下public class Teacher{…static{int youngage 30;…}public void AgeGroup(){if(age youngage){System.out.println(“年轻教师”);}}}可以看出直接用static修饰{代码块}即可但是这么用有什么区别呢那对比一下代码public class Teacher{…public void AgeGroup(){int youngage 30;if(age youngage){System.out.println(“年轻教师”);}}}方法的功能上没什么区别但是在每次调用方法AgeGroup ()时都要创建youngage并赋值而声明为static之后只要创建就一直存放在内存中。七、final关键字final不可改变的为了更好的设计或效率常常需要final来声明。a)final数据private final int i 0final关键字修饰数据时可以使数据恒定不变如一个永不改变的编译时常量、一个运行时初始化之后就不会改变的值。final定义常量常量必须是基本数据类型定义时必须对其进行赋值。final修饰对象对象引用初始化时指向一个对象之后就无法再改变它令它指向其他对象。当final修饰参数时候参数同上一样不能被修改只能被读取。空白final这里需要了解一下空白final空白final即使声明为final之后未给初始值的情况在Java中是允许存在的如private final int i。但是final在使用前必须被初始化。b)final方法private final void i(){ }final修饰方法的时候主要出于一个作用把方法锁定避免任何继承类修改其含义。(无法覆盖)。当然要注意的是在早期的Java中可以使用final方法来提高效率但是在方法内程序代码很多方法很大时就看不到任何效果在Java SE5和6的时候应该让编译器和JVM去处理效率问题。c)final类final修饰类的时候作用和方法差不多就是不可以被继承不存在子类。当一个类被定义为final时其类内的所有方法都默认为final不管类中的方法是否定义了final。------------------------------------------------分割线----------------------------------------------------------上文如有错误、写得不合理以及有疑惑的地方希望您可以在评论区提出。在下十分感谢。如果只是想在评论区吐吐槽、聊聊心得、卖个萌同样也十分欢迎。祝大家生活美好,干杯!~( ゜▽゜)つロ转载请注明原作者以及附上原文章地址谢谢。