如何理解java中的类和继承?

1.为什么需要使用继承?

1.提高代码的重用性(减少重复的代码)

2.提高程序的扩展性

 

2.Java类继承类的语法格式

Java中类继承类的关键字:extends   (implements是类继承接口的关键字)

格式:

public class 类名  extends 类名 {

}

注意:Java中类的继承是单继承(一个子类只能继承一个父类)。

 

继承是用来模拟现实生活中的什么关系呢?

包含关系:

例如:学生包含大学生、高中生、初中生、小学生、...

则可以定义大学生、高中生、初中生、小学生、...类让其继承学生类

因为大学生、高中生、初中生、小学生、...这些类都具有相同的属性和方法,例如名称、性别、年龄、...,也具有相同的方法,例如学习、休息

我们可以将这些属性和方法定义在学生类中,让其他的学生类继承学生类父类,可以大大提高编程效率。

 

3.子类继承父类后,子类能继承到父类的那些内容?

类中的访问修饰符有4种:private、默认的、protected、public

public:对所有类可见

protected:对同一包中的类可见、对同一包及不同包中的子类可见

default:对同一包中的类可见、对同一包中的子类可见

private:仅对类本身可见

 

继承和访问修饰符没有任何关系,即子类能继承到父类的所有的属性和所有的普通方法。

构造方法不能被子类继承,只能通过super关键字去调用。

3.1子类是否还可以定义父类中没有定义过的属性和方法呢?

当然是可以的呀。

 

4.方法重载和方法重写有什么区别?

方法重载的条件:

1.方法名完全一致;

2.方法所带的参数个数、顺序、类型至少要有一个不同。

3.可以是一个类中,也可以是由继承关系的类中。

方法重写的条件:

1.必须要存在继承关系;

2.子类在重写方法时,子类方法的访问修饰符可以大于或者等于父类方法中的访问修饰符;

3.子类在重写方法时,子类方法的返回值数据类型,方法名,参数都必须要和父类的完全一致。

即若考虑两个方法的关系是不是方法重写,首先需要看其所属的两个类是否具有继承关系,其次还要注意访问修饰符,参数个数、顺序、类型等。

判断是否是方法重写的关键字:@Override

有些方法不能进行重写:

1.private修饰符的方法不能进行重写;

2.默认的要看情况,如果子类和父类不在同一个包下,则不能重写(定义新方法);

3.final修饰的方法不能重写(会出错)。

4.1如何调用重写后的方法呢?

根据new关键字后的构造方法名来决定,如果构造方法名是子类的,则优先调用子类的方法,

如果子类没有此方法才会调用父类中的方法。

4.2根据上面规则,只会执行子类的方法,父类的方法就无法执行了,如果想要父类和子类的方法都能继承要如何处理?

使用super关键字来调用。

super关键字的应用和内存分析?

https://www.cnblogs.com/danbing/p/5034108.html

4.3什么情况下要使用方法重写呢?

子类和父类都有同一个行为(功能、用途),但是他们的具体实现又不同时,才会使用方法重写。

 

5.自动转型

条件:要使用自动转型必须要存在继承关系。

格式一:

父类名  对象名  = new 子类构造方法(参数值,...);

使用自动转型后会无法调用子类中特有的属性和方法,原因是因为Java的编译机制导致的;

Java在编译的时候,只会考虑对象名的类型,根据对象名的的类型去查找属性和方法是否存在,如果存在则编译通过,如果不存在则编译报错。

 

格式二:

访问修饰符   返回值数据类型  方法名(父类名  对象名){

对象名.方法名();//进行重写的方法

}

 

子类名  对象名A  = new 子类构造方法(参数值,...);

方法名(对象名A);

父类名  对象名B  = new 子类构造方法(参数值,...);

方法名(对象名B);

 

 

猜你喜欢

转载自blog.csdn.net/qq_37992662/article/details/88026166