Java继承和多态——子类继承性

类的继承格式
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:

class 父类 {
}

class 子类 extends 父类 {
}

例子:

class Animal {
}

class Tigger extends Animal {
}

表示的就是 Tigger 类继承了 Animal 类,我们可以说 Tigger 是 Animal 的子类,也可以说 Animal 是 Tigger 的超类或父类。Tigger 会继承 Animal 的域和方法,也就是说 Tigger 的实例对象可以调用 Anaimal 的方法和属性。

那为什么要使用继承呢?

我们现在来看一个例子:

class Anaimal {
private String type; // 动物种类
private int age; // 年龄

// 设置和获取动物属性
public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

}

class Tigger {
private String name; // 老虎名称
private int age; // 老虎年龄
private String type; // 老虎种类

// 设置和获取老虎属性
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}
}

从这两段代码可以看出来,代码存在重复了,导致后果就是代码量大且臃肿,而且维护性不高(维护性主要是后期需要修改的时候,就需要修改很多的代码,容易出错),要从根本上解决这两段代码的问题,就需要使用继承。

这个 Animal 类就可以作为一个父类,然后 Tigger 类继承这个类之后,就具有父类当中的属性和方法,子类就不会存在重复的代码,便于后期维护,代码也更加简洁,提高了代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码) ,使用继承的代码如下:

class Anaimal {
private String type;
private int age;

public Anaimal(String type, int age) {
this.type = type;
this.age = age;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}
// 老虎类继承动物类
class Tigger extends Anaimal{
// 定义自己的名称属性
private String name;

// 如果子类没有覆盖父类的构造方法则默认调用父类的构造方法
public Tigger(String type, int age) {
super(type, age);
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Tigger tigger = new Tigger("老虎",18);
tigger.setName("旺财");
System.out.printf("动物品种:%s\t名称:%s\t年龄:%d",tigger.getType(),tigger.getName(),tigger.getAge());
}
}

执行结果:

动物品种:老虎 名称:旺财 年龄:18

继承的特性:

  • 子类拥有父类非 private 的属性、方法,实现了代码复用;
  • 本质上来说子类会继承父类的所有属性(包括 private),只是私有属性和方法无法直接使用;
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
  • 子类可以用自己的方式实现父类的方法,即重写/覆写(Override);
  • Java 的类继承是单继承,不支持多继承,单继承就是一个子类只能继承一个父类,但是一个父类可以被多个子类继承,而子类却不可以继承多个父类;
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的继承是指一个类可以继承另一个类的属性和方法。子类继承父类的所有属性和方法,同时也可以添加自己的属性和方法。多态是指一个类的多种形态,即一个类可以被当做其父类或接口的实例来使用。在Java中,子类继承父类的性质同时具有多态性。 ### 回答2: Java继承多态是面向对象程序设计的基础,也是Java语言的特色之一。在Java中,通过继承可以使子类继承父类的属性和方法,并且可以扩展或修改这些属性和方法,这样可以大大提高代码的复用性和可维护性。而多态性则是Java的另一个特点,它允许同一种对象以不同的形态出现,这样可以提高程序的灵活性和可扩展性。 子类继承性继承的一种特殊形式,它指的是子类继承父类的所有属性和方法,并且可以在此基础上添加新的属性和方法。在Java中,子类通过关键字“extends”来实现对父类的继承,如下所示: ``` // 父类 public class Animal { public void eat() { System.out.println("Animal is eating."); } } // 子类 public class Dog extends Animal { public void bark() { System.out.println("Dog is barking."); } } ``` 在上面的代码中,子类Dog继承了父类Animal的eat()方法,并且添加了新的bark()方法。这样,在使用Dog类时,不仅可以调用自身的bark()方法,还可以调用继承自Animal类的eat()方法,如下所示: ``` Dog dog = new Dog(); dog.bark(); // 输出:Dog is barking. dog.eat(); // 输出:Animal is eating. ``` 从上面的示例中可以看到,在子类继承性的基础上,可以实现代码的复用和扩展,这也是Java继承的主要用途。 总之,子类继承性Java继承的一种形式,它实现了代码的复用和扩展,并且可以在子类中添加新的属性和方法。同时,子类继承性也是实现Java多态性的基础。因此,在实际开发中,我们应该合理地使用Java继承多态的特性,以提高代码的可维护性和可扩展性。 ### 回答3: Java中的继承多态是面向对象编程中非常重要的概念,可通过子类继承来实现代码的复用。当父类里的方法和成员变量被子类继承子类将自动获得父类中的属性和行为,而无需重新定义它们。子类继承性是面向对象编程中最重要的特性之一。 Java中的继承性允许类继承字段和方法,这些方法和字段在子类中都可被访问和使用。当子类继承了父类,父类中的字段和方法就成为子类成员。子类可以访问父类的公共成员、私有成员、受保护成员和默认成员,但子类无法访问父类中的static成员。 在继承过程中,子类可以对继承来的方法进行重写,以达到覆盖原有的方法和增强原有方法的目的。如果一个方法在子类中与父类中方法的名称、返回值类型和参数类型相同,那么这个方法就是父类中的方法会被完全覆盖。 多态性是指子类对象能够被作为父类对象使用的特性。这种特性使程序能够编写通用代码,同时在运行时选择不同的子类对象来实现不同的操作。多态性是面向对象编程中的重要特性,它提高了代码的复用率和可维护性。 总之,Java中的子类继承性是面向对象编程中非常重要的概念,可通过继承来实现代码的复用。同时,多态性也是面向对象编程中的重要特性,它提供了更高级的编程技术,使程序更加灵活、通用。理解并掌握Java继承多态,对于Java的面向对象编程非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值