初学Java之干货理论篇_子类与继承

初学Java之干货理论篇

子类与继承

1.继承的好处:提高了代码的复用性,多个类相同的成员可以放到同一个类中。
			 提高了代码的维护性,如果功能的代码需要修改,则修改一处即可。
			 让类与类之间产生了关系,是多态的前提。
2.继承的弊端:类的耦合性很强。
3.Java的继承采用单继承机制,即每个子类只能继承一个父类,可以通过多层继承的
  方式实现多重继承。
4.子类和父类在同一包中的继承:
	如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员
	变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的
	方法作为自己的方法,继承的成员变量或方法的访问权限保持不变。
5.子类和父类不在同一包中的继承:
	如果子类和父类不在同一个包中,那么,子类继承了父类的protected,public成员
	变量作为子类的成员变量,并且继承了父类的protected,public方法为子类的方法,
	继承的成员或方法的访问权限保持不变。
6.protected的进一步说明:
	(1)一个类A中的protected成员变量和方法可以被它的直接子类和间接子类继承,
	如B是A的子类,C是B的子类,D又是C的子类,那么B、C和D类都继承了A类的
	protected成员变量和方法。
	(2)如果用D类在D中创建了一个对象,该对象总是可以通过“.”运算符访问继承的或
	自己定义的protected变量和protected方法的,但是,若在另外一个类中,如在other类
	中用D类创建了一个对象object,该对象通过“.”运算符访问protected变量和protected
	方法的权限如所述:1️⃣对于子类D中声明的protected成员变量和方法,如果object要
	访问这些protected成员变量和方法,只要other类和D类在同一个包中就可以了。2️⃣如
	果子类D的对象的protected成员变量或protected方法是从父类继承的,那么就要一直
	追溯到该protected成员变量或方法的“祖先”类,即A类,如果other类和A类在同一个包
	中,那么object对象能访问继承的protected变量和protected方法。
7. instanceof运算符是Java独有的运算符号。boolean result=object instanceof class
8. instanceof是双目运算符,其左边的操作元是对象,右面的操作元是类,当左面的
	操作元是右面的类或子类所创建的对象时,instanceof 运算的结果为true,否则是false。
9.方法重写(方法覆盖):
	(1)**子类中定义一个方法,该方法的类型和父类的方法的类型一致(方法名字,参数
	个数,参数的类型)**。
	(2)**子类通过方法的重写可以隐藏继承的方法,子类通过方法的重写可以把父类的
	状态和行为改变为自身的状态和行为。**
10.在jdk 1.5版本之后,允许重写方法的类型可以是父类方法的类型的子类型,不必完全一致。
11.在重写父类的方法时,不可以降低方法的访问权限。
	public>protected>friendly>privated
	
	重写的目的:子类通过方法的重写可以隐藏继承的方法,把父类的状态
	和行为改变为自身的状态和行为。如果父类的方法f可以被子类继承,子类就有权
	重写f,一旦子类重写了父类的方法f,就隐藏了继承的方法,那么子类对象调用
	方法f时调用的一定是重写方法f。重写方法即可以操作继承的成员变量,继承的方法,
	也可以操作子类新声明的成员变量,新定义的其他方法,但无法操作被子类隐藏的成
	员变量和方法,如果子类想使用被隐藏的方法或成员变量,必须使用关键字super。
	
12.在子类中想使用被子类隐藏的成员变量或方法就可以使用关键字super。
	比如super.x,super.play()就是访问和调用被子类隐藏的成员变量x和方法play()
13.**用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个
	构造方法。也就是说,如果子类的构造方法没有明显地指明使用父类的哪个构造方法
	,子类就调用父类的不带参数的构造方法,即如果在子类的构造方法中,没有明显地
	写出super关键字来调用父类的某个构造方法,那么默认地有:super()。**
14.**子类不继承父类的构造方法,因此,子类在其构造方法中需使用super来调用父类的
	构造方法,而且super必须是子类构造方法中的头一条语句。**
15.final关键字可以修饰类,成员变量和方法中的局部变量。
	(1)可以使用final将类声明为final类。final类不能被继承,即不能有子类。
		如:final class  A{……}
	(2)如果用final修饰父类中的一个方法,那么这个方法不允许子类重写。
 		也就是说,不允许子类隐藏可以继承的final方法。
16.成员变量的隐藏:如果所声明的成员变量的名字和从父类继承的成员变量
的名字相同(声明的类型可以不同),在这种情况下,子类就会隐藏掉所继
承的成员变量,即子类对象以及子类自己声明定义的方法操作与父类同名的
成员变量是指子类重新声明定义的这个成员变量。需要注意的是,子类对象
仍然可以调用从父类继承的方法操作隐藏的成员变量。
17.对象的上转型对象的实体是由子类负责创建的。
	例子:A a = new B();//A类是B类的父类
18.上转型对象的特点:
(1)上转型对象不能操作子类新增的成员变量;不能调用子类新增的方法。
(2)上转型对象可以访问子类继承或隐藏的成员变量,也可以调用子类继承
的方法或子类重写的实例方法。上转型对象操作子类继承的方法或子类重写
的实例方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写
了父类的某个实例方法后,当对象的上转型对象调用这个实例方法时一定是
调用了子类重写的实例方法。
(3)不可以将父类创建的对象的引用赋值给子类声明的对象。
(4)如果子类重写了父类的静态方法,那么子类对象的上转型对象不能调用
子类重写的静态方法,只能调用父类的静态方法。
19.多态性:指父类的某个实例方法被其子类重写时,可以各自产生自己的功能行为。
20.用关键字abstract修饰的类称为abstract类(抽象类)。
	如:
		abstract class A{
			……
		}
		用关键字abstract修饰的方法称为抽象方法:
	如:
		abstract int main(int x,int y)
	注意:(1)abstract类中可以没有abstract方法
				(2)abstract类不能用new运算创建对象
					(3)如果一个abstract类是abstract类的子类,它可以重写
		父类的abstract方法,也可以继承这个abstract方法。
21.abstract类只关心操作,但不关心这些操作具体实现的细节,可以使程序的设计者把
主要精力放在程序的设计上,而不必拘泥于细节的实现。
22.在设计一个程序时,可以通过在abstract类中声明若干abstract方法,表明这些方法
在整个系统设计中的重要性,方法体的内容细节由它的非abstract子类去完成。
23.使用多态进行程序设计的核心技术之一是使用上转型对象,即将abstract类声明对象
作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
24.所谓的面向抽象编程,是指当设计一个类时,不让该类面向具体的对象,而是面向
抽象类,即所设计类中的重要数据是抽象类声明的对象,而不是具体类声明的对象

特别注意:
仅供参考学习,转载请附上原文链接
分享学习心得,如有侵权,望联系本人处理,谢谢
还在读大学的程序员,项目经验少,如有纰漏,感谢指正
需要源代码请联系本人
谢谢配合

如果这篇文章对您有帮助,小小的点个赞,算是给小学弟的鼓励吧!谢谢大佬!!/呱呱.jpg

发布了49 篇原创文章 · 获赞 39 · 访问量 5210

猜你喜欢

转载自blog.csdn.net/qq_44749053/article/details/102624595