四月十九号java基础知识

2023-05-25,,

1.总括:类的继承是使用已有的类为基础派生出新的类。通过类继承的方式,便能开发出
新的类,而不需要编写相同的程序代码,所以说类的继承是程序代码再利用的概念
抽象与接口都是类概念的扩展。通过继承扩展出的子类,加上覆盖的应用,抽象类可以
一次创建并控制多个子类。接口则是JAVA语言里面实现多重继承的重要方法
2.类的声明通过extends关键字创建一个类的子类格式:
class Subclass extends Superclass{
.
.
.}
上述对象把Subclass声明为类Superclass的直接子类,如果Superclass又是某个类的子类,
则Subclass同时是该类的间接子类
3.子类的每个对象也都是其父类的对象,这是继承性的“即是”性质。也就是说Subclass
继承Superclass,则subclass即是Superclass,所以任何可以使用Superclass实例的地方
都允许使用Subclass实例,反之,则不然,父类对象不一定是它子类的对象
4.说明:
1)通过extends关键字,可将父类中的非私有成员继承给子类。
2)在java语言的继承中,执行子类的构造方法之前,会先调用父类中没有参数
的构造方法,其目的是为了要帮助继承自父类的成员做初始化操作
3)在严格意义上说,构造方法是不能被继承的,例如父类person有一个构造方法
person(String,int),不能说子类student也自动有一个构造方法Person(String,int)
但这并不意味着不能调用父的构造方法
5.调用父类中特定的构造方法:
如果父类中有多个构造方法时,如何才能调用父类中特定的构造方法呢?
做法就是在子类中通过super()语句调用父类特定的构造方法
6说明:
1).不管省略不省略子类有参构造中的super语句,则父类中的无参构造方法还会被调用
2).调用父类构造方法的super()语句必须写在子类构造方法中的第一行,否则编译会出现错误
3).在子类访问父类的构造方法,其格式为super(参数列表)。super可以重载,也就是说super
()会根据参数的个数和类型,执行父类相应的构造方法
4.Java程序中在执行子类的构造方法之前,如果没有用super()来调用父类中特定的构造方法
,则会先调用父类中没有参数的构造方法。因此在父类中只定义了有参数的构造方法 ,而在
子类的构造方法中有没有用super()来调用父类中特定的构造方法,则编译时会发生错误
有因为父类中找不到“没有参数的构造方法”可供执行。解决的办法是在父类中加上一个
“不做事”且没有参数的构造方法即可。如public Person(){}
5)super()与this()的功能相似,但super()是从子类的构造方法调用父类的构造方法,而this
()则是在同一个类内调用其他的构造方法。当构造方法有重载时,super()与this()均会根据
所给出的参数类型和个数,正确地执行相对应的构造方法
6).super()与this()均必须放在构造方法内的第一行,也就是这个原因,super()与this()无法同时
存在同一个构造方法内
7)与this关键字一样,super指的也是对象,所以super 同样不能在static环境中使用,包括
静态方法和静态初始化器(static语句块)
7.在子类中访问父类的成员:
在子类中使用super()不但可以访问父类的构造方法,还可以访问父类的成员变量和成员方法
但super不能访问子类添加的成员。在子类中访问父类的成员和方法的格式:
super.变量名
super.方法名
8.用Protected修饰的成员可以被该类自身,与它在同一个包中的其他类,在其他包中的该类的子类
三种类所引用。将成员声明为protected的最大好处就是可以同时兼顾安全性与便利性。
因为它只能供父类与子类或同一包中的类来访问 ,而其他类无法访问它
9.覆盖:覆盖与重载同属于多态,覆盖则是指子类中定义定义名称,参数个数与类型均与
父类中完全相同的方法,用以重写父类中同名方法的功能
10.覆盖父类的方法:
在子类定义父类已有的方法时,应保持与父类中完全相同的 方法头声明,即应与父类中
被覆盖的方法有完全相同的方法名、返回值类型和参数列表,否则就不是方法的覆盖
而在子类定义自己的与父类无关的方法,父类的方法未被覆盖,所以依然存在
也就是说子类继承父类所有被访问的成员方法时,如果子类的方法头与父类中的方法头
完全相同,则不能继承,此时子类的方法是覆盖的方法
11.子类中不能覆盖父类中声明为final或static的方法
12.注意:通过父类的对象访问子类的成员只限于“覆盖”的情况发生于。
也就是说父类与子类的方法名称、参数个数与类型必须完全相同,才可通过父类的对象
调用子类的方法。
13.创建父类类型的的变量指向子类对象。例如Person per = new Student("张三",23,"电子");
1)即将子类对象赋值给父类类型的变量,这种技术称为“向上转型”
2)由于向上转型是将子类的对象看作是父类对象,是从一个具体的类到一个较抽象的类,
所以它是安全的
3)“向下转换”就是将将抽象的类转换为比较具体的类。例如
Person per;
Student stu = new Person("张三",23,"电子");
4)当在程序中使用向下转换时,必须使用显性类型转换

总结:今天一天收获了跟类的继承相关的知识点,子类继承父类extends关键字连接

如果在父类中有无参构造,那么子类中继承不会报错

如果父类中没有无参构造,有有参构造 ,那么子类必须有与父类相关的有参构造

子类调用父类成员变量通过super语句,并且super语句必须放在子类构造方法的第一行

子类中访问父类成员变量和方法

super.name

super.setPerson

在子类中定义了与父类相同的的方法名,返回值以及参数列表时,子类的方法

会覆盖父类的方法

四月十九号java基础知识的相关教程结束。

《四月十九号java基础知识.doc》

下载本文的Word格式文档,以方便收藏与打印。