Java知识点概要2

31.类的定义格式

修饰符\]class〈类名〉\[extends父类名\]\[implements接口名

类主体

其中,clas是定义类的关键字,《类名〉是所定义的类的名字,extends表示该类维承了它的父类,父类名指明父类的名称,implements表示类所实现的接口,若实现多个接口则用逗号隔开。

32.类主体设计

Java的类包括变量和方法,分别叫做类的成员变量和成员方法。因此,类主体的设计主要是成员变量的设计和成员方法的设计两个部分。声明成员变量的格式为:

修饰符\]《变量类型》〈变量名〉声明成员方法的格式为: 〈修饰符》〈返回值类型》〈方法名〉(\[参数列表\])\[throws \\]( 方法体 33.倒建对象包括对象声明和对象初始化两个部分,通常这两部分是结合在一起的,即定义对象的同时对其初始化,为其分配空间,并进行赋值。其格式为:《类名》《对象名〉=mew〈类名》(\[〈参数列表》\]) 34.使用对象成员::对象的使用通过成员运算符"."实现对变量的访问和方法的调用,通常使用的格式为:对象名,成员变量名 对象名。成员方法名(\[〈参数列表〉\]) 35.同类的对象之间也可以进行赋值,这种情况称为对象赋值。和变量赋值不一样,对象赋值并不是真正把一个对象赋给另一个对象,面是让一个对象名存储的对象首地址和另一个对象名存储的对象首地址相间。换句话说,对象间的赋值实际上是对象首地址的赋值, 36.访问控制修饰符:访间控制修饰符说明类或类的成员的可访问范围。 用public修饰的类或成员拥有公共作用域,表明此类或类的或员可以被任何Java中的类所访问,是最广泛的作用范围。 用protected修饰的变量或方法拥有受保护作用域,可以被同一个包中所有的类及其他包中该类的子类所访问。 用private修饰的变量或方法拥有私有作用域,只能在此类中访问,在其他类中,包括该类的子类中也是不允许访问的,private是最保守的作用范围。 没有使用任何修饰符的,拥有默认访问权限(也称友好访问权限),表明此类或类的成员可以被同一个包中的其它类访问。 37.类型修饰符static:在一个类中,使用static修饰的变量和方法分别称为类变量(或称静态变量)和类方法(或称静态方法),没有使用static修饰的变量和方法分别称为实例变量和实例方法。 类成员属于这个类而不是属于这个类的某个对象,它由这个类所创建的所有对象共同拥有,任何一个该类的对象改变了类成员,则对其他对象面言该类成员会发生同样的改变。 对于类成员,既可以使用对象进行访间,也可以使用类名直接进行访问,并且在类方法中只能访问类成员,面不能访问实例成员。 实例成员由每一个对象个体独有,对象的存储空间中的确有一块空间用来存储该成员,不同的对象之间,它们的实例成员相互独立,任何一个对象改变了自己的实例成员,只会影响这个对象本身,面不会影响其他对象中的实例成员。对于实例成员,只能通过对象来访问,不能通过类名进行访间。在实例方法中,既可以访间实例成员,也可以访问类成员。 38.构造函数也称为构造方法,用来对对象进行初始化。 构造函数的名字必须和类名完全相同,并且没有返回值,甚至连表示无返回值的空类型(void)也没有,构造函数一般应定义为public. 39.一般而言,每个类都至少有一个构造函数。如果程序员没有为类定义构造函数,Java虚拟机会自动为该类生成一个默认的构造函数。要特别注意的是,如果程序员定义了一个或多个构造函数,则自动屏蔽掉默认的构造函数。 40.对象作为方法的参数:当使用对象实例作为参数传递给方法时,参数的值是对对象的引用,也就是说,传递给到方法内部的是对象的引用值而不是对象的内容。在方法内这个引用值不会被改变。但如果通过该引用值修改了所指向的对象的内容,则方法结束后,所修改的对象内容可以保留下来 41.在方法内,ths关键字可以为调用了方法的那个对象生成相应的地址,从而获得了对调用本方法的那个对象的引用,需要注意的是,当一个变量被声明为static时,是不能用this来指向的,因为this指向某一具体对象,不能用来指示类本身。this还可以用在某个构造函数的第一句,用来调用该类的另一个构造函数。 42.封装将类的外部界面与类的功能实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访间接口实现对数据的操作。即使实现细节发生了改变,也还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作。这使代码维护更简单。 43.包是Java提供的文件组织方式,一个包中可以包括很多类文件,包中还可以有子包,形成包等级,使用包不仅方便了类文件的管理,面且扩大了Java命名空间,不同的程序员可以创建相同名称的类,只要把它们放在不网的包中,就可以方便的区分,不会引发冲突。 44.import语句:Java使用import语句来引入特定的类甚至是整个包。 45.每个基本数据类型都对应一个数据类型类,共8个,它们是Character类,Byte类,Short类,Integer类,Long类,Float类,Double类和Boolean类,分别对应于基本数据类型的 char,byte,short,int,long,float,doubleflboolean. 46.数据类型类的常用方法:对所有数据类型类的对象,形如"对象名xxxxValueO"的成员方法,用来获得对象中的基本类型数据。 47.方式一;先定义数组变量,再创建数组对象,为数组分配存储空间。其中,一维数组的定义可以采用如下两种格式之一:数组元素类型数组名\[\]:数组元素类型\[\]数组名: 对已经按上述格式定义的数组,进一步地通过new运算符创建数组对象分配内存空间,格式是: 数组名wnew数组元素类型\[数组元素个数

方式二:同时定义数组变量并创建数组对象,相当于将方式一中的两步合并,格式是:数组元素类型数组名[]=new数组元素类型[数组元素个数]:数组元素类型[]数组名mnew数组元素类型[数组元素个数]

方式三:利用初始化,完成定义数组变量并创建数组对象,此时不用new运算符。格式是;数组元素类型数组名[]={值1,值2,..):

48.对数组元素的访间,通过下标进行。一维数组元素的访问格式为:数组名[下标]

Java规定,数组下标由0开始,最大下标是数组元素个数-1。在访问数组元素时,要特别注意下标的越界问题,即下标是否超出范围。

49.继承是存在于面向对象程序中的两个类之间的一种关系,当一个类A能够获取另一个类 B中所有非私有的数据和操作的定义作为自己的部分或全部成分时,就称这两个类之间具有维承关系。被维承的类B称为父类或超类,缝承了父类或超类的数据和操作的类A称为子类。

一个父类可以同时拥有多个子类,这时这个父类实际上是所有子类的公共城和公共方法的集合,而每一子类则是父类的特殊化,是在父类的基础之上对公共域和方法在功能,内涵方面的扩展和延伸

50.使用继承具有以下的好处 降低了代码编写中的冗余度,更好地实现了代码复用的功能,从而提高了程序编写的效率;由于降低了代码的冗余度,使得程序在维护时就变得非常的方便。

51.维承的类型:单重维承,是指任何一个类都只有一个单一的父类,多重继承是指一个类可以有一个以上的父类,它的静态的数据属性和操作从所有这些父类中维承。 Java 语言仅支持类的单重继承。

52.所谓多态,是指一个程序中同名的不同方法共存的情况。面向对象的程序中多态的情况有多种,可以通过子类对父类成员的覆盖实现多态,也可以利用重载在同一个类中定义多个同名的不同方法

53.继承的实现:主要有以下几个步骤 1、确定父类。

2、定义子类,它的具体语法是:

类修饰符\]class 子类名 extends 父类名3实现子类的功能。 54.构造函数的维承 1、子类无条件地维承父类的不含参数的构造函数; 2、如果子类自己没有构造函数,则它将继承父类的无参数构造函数作为自己的构造函数;如果子类自己定义了构造函数,则在创建新对象时,它将先执行继承父类的无参数构造函数,然后再执行自己的构造函数。 3、对于父类的含参数构造函数,子类可以通过在自己构造函数中使用"super"关键字来调用它,但这个调用语句必须是子类构造函数的第一个可执行语句。 55.子类对继承自父类的类成员重新进行定义,就称为覆盖,它是一种很重要的多态形式,要进行覆盖,就是在子类中对需要覆盖的类成员以父类中相网的格式,再重新声明定义一次,这样就可以对维承下来的类成员进行功能的重新实现,从而达到程序设计的要求。 56.域变量的隐藏:子类重新定义一个与从父类那里维承来的属性变量完全相同的变量,称为域变量的隐藏。对于域变量的隐藏来说,父类定义的域变量在子类对象实例化时仍然分配一个存储空间,当子类执行维承自父类的操作时,处理的是维承自父类的变量,而当子类执行它自己定义的方法时,所操作的就是它自己定义的变量,而把维承自父类的变量"隐藏"起来。 57.方法的覆盖 子类重新定义与父类同名的方法,实现时父类方法的覆盖(Overload). 58.方法的覆盖与域的隐藏的不同之处在于;子类隐藏父类的域只是使之不可见,父类的同名城在子类对象中仍然占有自己的独立内存空间 而子类方法对父类同名方法的覆盖将清除父类方法占用的内存空间,从而使父类方法在子类对象中不复存在。 59.方法的覆盖中需要注意的问题是:子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名,返回值和参数列表。否则就不是方法的覆盖,而是子类定义自己的与父类无关的方法,父类的方法未被覆盖,所以仍然存在。 60.相对this来说,super表示的是当前类的直接父类对象,是当前对象的直接父类对象的引用。所谓直接父类是相对于当前类的其他"祖先"类而言的。 61.在Java 中,同一个类中的两个或两个以上的方法可以有同一个名字,只要它们的参数声明不同即可,在这种情况下,该方法就被称为重载(overloaded),这个过程称为方法重载(method overloading)。方法重载是Java实现多态性的一种方式 62.有两个规则适用于重载方法: 1、调用语句的参数表必须有足够的不同,以至于允许区分出正确的方法被调用。 2、方法的返回类型可以各不相同,但它不足以使返回类型变成唯一的差异。重载方法的参数表必须不同。 63.在Java中,凡是用abstract修饰符修饰的类称为抽象类。 64.抽象类和一般的类不同之处在于: 1如果一个类中含有未实现的抽象方法,那么这个类就必须通过关键字abstract进行标记声明为抽象类。 2抽象类中可以包含抽象方法,但不是一定要包含抽象方法。它也可以包含非抽象方法和域变量,就像一般类一样。 3抽象类是没有具体对象的概念类,也就是说抽象类不能实例化为对象。 4抽象类必须被维承。子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。 65.如果一个类被fnal修饰符所修饰和限定,说明这个类不可能有子类,这样的类就称为最终类,最终类不能被别的类雄承,它的方法也不能被覆盖。被定义为fnal的类通常是一些有固定作用,用来完成某种标准功能的类。 66.接口就是一种约定,使得实现接口的类在形式上保持一致。 67.接口与抽象类的区别: 1、接口不能包含任何可以执行的方法,面抽象类可以。 2、类可以实现多个接口,但只有一个父类。 3、接口不是类分级结构的一部分,而没有联系的类可以执行相同的接口。

相关推荐
liulilittle7 小时前
XDP VNP虚拟以太网关(章节:一)
linux·服务器·开发语言·网络·c++·通信·xdp
我不是8神7 小时前
Qt 知识点全面总结
开发语言·qt
我是Superman丶7 小时前
【异常】Spring Ai Alibaba 流式输出卡住无响应的问题
java·后端·spring
墨雨晨曦887 小时前
Nacos
java
Ralph_Y7 小时前
多重继承与虚继承
开发语言·c++
invicinble7 小时前
seata的认识与实际开发要做的事情
java
今晚务必早点睡7 小时前
写一个Python接口:发送支付成功短信
开发语言·python
jghhh017 小时前
基于C#实现与三菱FX系列PLC串口通信
开发语言·算法·c#·信息与通信
ada7_8 小时前
LeetCode(python)22.括号生成
开发语言·数据结构·python·算法·leetcode·职场和发展
喵了meme8 小时前
C语言实战练习
c语言·开发语言