Java开发精华总结(第三章)


目录

对象

方法

构造方法

成员变量和局部变量

访问修饰符

this关键字

super关键字


 


类是模子,是确定对象将会拥有的特征和行为(属性和方法),类的组成就是属性和方法。

所有的Java程序都以类(Class)为组织单元。

 

定义Java中的类

定义Java中的一个类首先要定义类名,public class 类名,一个大括号开始一个大括号结束,class是声明类的关键字;

类名定义完后要开始编写类的属性,对象有什么是通过属性来标识的,把属性定义在类里面(大括号内)。定义属性的时候首先要指定属性的类型,然后指定属性名字,一个类当中我们可以写一个或者多个属性,也可以不定义属性;

最后一步是编写类的方法,方法是用来修饰可以做什么,也是定义在大括号内部,我们可以定义一个方法,也可以定义多个方法,也可以不定义方法。

 

内部类

内部类就是定义在一个类里面的类,包含内部类的类被称为外部类。

内部类的主要作用:提供了更好的封装,可以把内部类隐藏在外部类之中,不允许同一包中的其他类访问该类;内部类的方法可以直接访问外部类的所有数据,包括私有数据;内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便。

内部类与外部类的区别:一个类是外部类的时候只能被public或者默认访问修饰符所修饰,但是一个类如果是内部类,则可以被所有访问修饰符所修饰。因为一个类作为内部类的时候,就只是作为外部类的一个成员属性了,因此可以使用访问修饰符。

 

成员内部类

成员内部类是最常见的内部类,也叫做普通内部类。

成员内部类的使用方法:

Inner类定义在Outer类的内部,相当于Outer类的一个成员变量的地位,Inner类可以使用任意访问控制符,例如public、protected、private等;Inner类中定义的方法可以直接访问Outer类中的数据,不受访问控制符的影响,例如直接访问Outer类中的私有属性;定义了成员内部类后,必须使用外部类对象来创建内部类对象,不能直接去new一个内部类对象。

    内部类 对象名 = 外部类对象.new 内部类();

编译一个含有内部类的程序后会产生两个.class文件,一个是外部类的.class文件,一个是内部类的.class文件,即成员内部类的.class文件总是这样:

外部类名$内部类名.class

内部类可以直接使用外部类的属性和方法,但是外部类却不可以直接使用内部类的属性和方法。如果想要调用内部类的属性和方法可以先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法;如果外部类和内部类具有相同的成员变量和方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用this关键字。

 

静态内部类

静态内部类是用static关键字修饰的内部类。

静态内部类的特点:

静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问;如果外部类的静态成员与内部类的成员名称相同,可通过 类名.静态成员 访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过 成员名 直接调用外部类的静态成员;

创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名=new 内部类()

 

方法内部类

方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符。

 

 

对象


对象的使用:首先是创建对象,然后通过对象名来使用这个对象。

创建对象我们通过 类名 对象名 = new 类名();我们就可以把一个类实例化变成一个对象。

类通过代码形式保存在文件当中,当我们把文件的信息放到内存当中,这些信息的集合我们就把它们称为对象,这个过程我们称之为实例化

new 类名();就是对一个对象进行了实例化,最终得到了这个对象。只不过我们把对象赋给了对象名这个变量,我们对对象名操作其实就相当于对这个对象进行操作。

通过我们的 对象名.属性(引用对象的属性) 就可以使用我们对象的属性,并且给我们对象的属性赋值;只需要通过 对象名.方法(引用对象的方法)就可以调用对象的方法。

 

 

方法


方法是一个功能模块,是用来解决一类问题的代码中的有序组合。

方法的访问修饰符是方法允许被访问的范围权限,有public、friendly、protected和private四种,其中public表示修饰方法可以被其他任何代码处调用。

一个方法如果不返回任何值,则返回值类型指定为void;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用return语句返回值。

定义方法的名字必须使用合法的标识符。

传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。根据方法是否带参是否带返回值可以将方法分为无参无返回值方法无参带返回值方法带参无返回值方法带参带返回值方法

 

1.无参无返回值方法

当一个方法没有参数也没有返回值,我们称这样的方法叫无参无返回值方法。使用方法需要定义方法和调用方法。调用方法是当需要调用方法执行某个操作时,可以先创建类的对象,然后通过 对象名.方法名();来实现。

方法体放在一对大括号中,实现特定的操作;

方法名主要在调用这个方法的时候使用,需要注意命名规范,一般使用驼峰命名法。

 

2.无参带返回值方法

当方法没有参数但有返回值,我们称这样的方法为无参带返回值方法。调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。

如果方法的返回类型为void,则方法中不能使用return返回值;

方法的返回值最多只能有一个,不能返回多个值;

方法返回值的类型必须兼容。

 

3.带参无返回值方法

一个方法有参数但没有返回值的情况我们称之为带参无返回值方法。调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值。

定义方法时的参数我们称为形参,目的是用来定义方法需要传入的参数的个数和类型

把调用方法时的参数称为实参,是传递给方法真正被处理的值

调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应;

调用方法时候,实参不需要指定数据类型;

方法的参数可以是基本数据类型,也可以是引用数据类型;当方法的参数有多个时,多个参数间以逗号分隔。

 

4.带参带返回值方法

方法既有参数,又有返回值,我们称之为带参带返回值的方法。

 

方法的重载

一个类中包含两个及两个以上的方法名,但形参列表不同的方法,我们称之为方法的重载,也可以说是该方法被重载了。

当调用被重载的方法时,Java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。

判断方法重载的依据:必须是在同一个类中;方法名相同;方法参数的个数,顺序或类型不同;与方法的修饰符或返回值没有关系。

 

 


1.Java程序中包是用来管理Java文件,解决同名文件冲突的。

2.定义包通过关键字 package 实现的。(package 包名)

3.定义一个包必须放在Java源程序的第一行,包名间可以使用点号 "." 隔开。

4.包的使用可以通过 import 关键字加上我们的包名,在某个文件使用我们通过包来修饰的类;

5.Java中包的命名规范:全小写字母拼写;

6.使用的时候可以加载某个包下的所有文件(com.ms.*),也可以加载某个具体子包下的所有文件(com.ms.movie.*)。

 

 

构造方法


构造方法是定义在Java类中的一个用来初始化对象的方法。普通方法只是代表对象可以干什么;构造方法可以创建一个对象,可以初始化对象的值。构造方法与类名相同且没有返回值。

初始化对象:使用 new + 构造方法 创建一个新的对象。

构造方法分为无参构造方法和有参构造方法,没有参数的构造方法叫做无参构造方法,有参数的构造方法叫做有参构造方法。构造方法的代码块中我们放一些初始化的代码。创建对象我们拥有两种方法,一种是通过无参的构造方法,另一种是通过有参的构造方法创建对象。通过有参构造方法不仅可以创建对象,还可以给对象赋初始值。

我们创建对象的时候其实就是在执行构造方法(Dog dog = new Dog();

当我们没有指定构造方法时,系统会自动添加无参的构造方法;当有指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。

 

 

成员变量和局部变量


成员变量:成员变量一般是我们在类中定义,用来描述对象将要有什么;

局部变量:局部变量是定义在类的方法中。在方法中临时保存数据,这些数据就是保存在局部变量中的。

局部变量定义在类的方法内部,成员变量定义在类中。成员变量可以被本类的所有方法使用,也可以被其他和当前类有关系的类的方法所使用,局部变量只能在当前方法中使用。

成员变量和局部变量的区别

1.作用域不同。作用域就是作用的范围,局部变量的作用域仅限于定义它的方法,成员变量的作用域是整个类。局部变量的范围是方法的开始到方法的结束,成员变量的作用范围是类的开始到类的结尾,类中所有的方法都可以共享我们的成员变量。

2.初始值不同。在Java程序中会给成员变量一个初始值,局部变量没有默认初始值。

3.同一个方法中不允许有同名的局部变量;在不同的方法中可以有同名局部变量。

4.两种变量同名时,局部变量具有更高的优先级。我们称此为就近原则。

 

 

访问修饰符


访问修饰符可以修饰属性和方法的访问范围。访问修饰符有

private:私有的,作用域最小,只能在当前类中被访问到。(本类访问)

friendly(默认,未指定):在未指定访问修饰符的情况下默认是friendly友好的,友好是对同一个包的类友好。

friendly作用域是同个包中的所有类都能进行访问。用friendly修饰的成员只能被该类所在同一个包中的子类所继承。就是说只有在相同包下的子类才可以访问父类中friendly修饰的成员。(本类+同包类 访问)

protected:受保护的,受到该类所在的包保护。被protected修饰的成员会被位于同一个包中的所有类访问到,被protected修饰的成员也能被该类的所有子类继承。(本类 + 同包类 + 子类 访问)

public:公共的,被public修饰的内容能在任何类中被访问到。(都可以访问)

public修饰类:Java源文件中只能有一个类被声明为public,而且被public修饰的类必须和所在源文件的文件名相同,否则编译不能通过;public修饰变量和方法:可以在任何类中被访问到,通过操作该类的对象能随意访问public成员;public继承上的运用:被public所修饰的成员能被所有的子类继承下来。

      作用域  本类(当前类)     同包类      子类     不同包的类
       public           √         √          √            √
     protected           √         √         √ 
       friendly           √         √  
       private           √   

 

 

this关键字


this关键字代表当前对象;

this.属性 操作当前对象的属性;

this.方法 调用当前对象的方法;

当我们调用封装属性的时候,经常会使用this关键字。

 

 

super关键字


super关键字在对象的内部使用,可以代表父类对象

如果要调用父类的属性,可以 super.XXX;来实现,如果要调用父类的方法,可以 super.XXX();来实现。

子类构造的过程中必须调用其父类的构造方法。如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。

如果显示调用了构造方法,必须在子类构造方法的第一行写出。

如果子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值