Java支持类的继承,这意味着可以定义一个类(即子类),它继承另一个类的属性和方法(即超类或父类)。通过继承,可以创建新的类,它们从已有的类中继承了一些属性和方法,并可以添加新的属性和方法。
例如:
//父类
class House{
private int area;
protected String name;
//空构造器
House()
{
}
House(int area,String name)
{
this.area = area;
this.name = name;
}
//显示房间基本信息
public void Show_ifo()
{
System.out.println("这个房间的名字是:"+name+" 大小是:"+area+" 立方米");
}
}
//子类1
class BedRoom extends House{
private int Bed_Cound;
BedRoom(int area,String name,int Bed_Cound)
{
super(area,name);
this.Bed_Cound = Bed_Cound;
}
public void sleep()
{
System.out.println("开启睡眠模式");
}
//设置床的个数
public void Set_Bed_Cound(int count)
{
Bed_Cound = count;
}
//显示床的个数
public int Get_Bed_Cound()
{
return Bed_Cound;
}
// 重载show_ifo()方法
public void Show_ifo()
{
super.Show_ifo();//调用父类方法
System.out.println("这个房间的名字是(子类):"+super.name); //调用父类属性
}
}
//子类2
class LivingRoom extends House{
private int Kitchen_count;
LivingRoom(int area,String name)
{
super(area,name);
}
public void cook()
{
System.out.println("打开煤气灶");
}
//设置厨具的个数
public void Set_Kitchen_count(int count)
{
Kitchen_count = count;
}
//显示厨具的个数
public int Get_Kitchen_count()
{
return Kitchen_count;
}
}
public class Main{
public static void main(String[] args) {
BedRoom br = new BedRoom(21, "主卧", 0);
LivingRoom lr = new LivingRoom(30,"客厅");
br.Show_ifo();
lr.Show_ifo();
br.Set_Bed_Cound(3);
System.out.println("床的个数为"+br.Get_Bed_Cound());
lr.cook();
}
}
但需要特别注意的是:
1、若父类中无空构造器,而在父类中又自定义构造器覆盖了默认构造器(每调用一个类时,若没有自定义构造器,会默认构建一个空的构造器),那么在子类中若无构造函数,则会报错。
解决方法1:在父类中添加空构造器
解决方法2:在子类中利用super关键字显式调用父类构造器,super关键字必须在最前面
super关键词介绍:(super关键字只能在子类中使用)
1.在子类中调用父类的方法及属性
例如:
2.调用父类中的构造方法
前文已提及
总结:
在Java中,继承指的是一种面向对象的编程技术,它允许一个类(子类)获得另一个类(父类)的属性和方法。这样,子类就能够继承父类的所有属性和方法,而无需重新定义或实现它们。
继承的主要优点有以下几点:
- 继承可以减少代码冗余,提高代码复用率。
- 继承可以提高程序的扩展性和可维护性。
- 继承可以清晰地表示类与类之间的关系。