什么是继承?
1.继承(inheritance)就是is–a关系,作为面向对象的基本特征之一,可以使得子类具有父类的属性和方法或者重新定义,追加属性和方法
2.类的继承性表现为子类继承父类相关的数据成员和成员方法。在Java中,子类继承父类要使用extends关键字,如:
class Cat extends Animal(){
//类内结构代码
}
以上代码表明Cat 类继承了Animal类。其中Cat为子类Animal为父类,那么Cat类到底继承了Animal类的哪些东西呢?
假如Animal类中有毛色,瞳色属性;吃饭,睡觉方法。那么Cat类继承Animal类就也包含毛色,瞳色属性;吃饭,睡觉方法。这样就不需要再次编写相同的代码,同时若子类还可根据需要添加新的属性或方法。
3.下面写一个Student类继承Person类
public class Person {//父类
private String name;//父类的属性
private int age;
public Person (String name, int age) {//父类有参构造方法
this.name = name;
this.age = age;
}
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 void Eat() {//父类Eat方法
}
}
public class Student extends Person {//子类中继承了父类的name,age属性
public Student(String name, int age) {
super(name, age);//子类通过super来调用父类构造方法
}
public void Studying() {//子类添加父类中没有的Studying方法
System.out.println("姓名:" + super.getName());
System.out.println("年龄:" + super.getAge());
System.out.println( "特征:学习");
}
}
特点:
1.父类中一般只定义属性和方法(这一般可以理解为是子类共有的,这就是父类更通用,子类更具体。
2.使用extends 关键字继承父类共有的属性外,子类可以有自己特有属性和方法。
3.所以类都会隐藏迪继承Object类,因为它们都属于“对象类”。所以类都以Object类为父类。
4.子类只能获取父类中的非private的属性,如果想要继承就要提高公共的set和get方法,私有的方法是无法访问的。
5.子类通过super关键字来调用父类的构造方法。
注意:
Java语言不支持多重继承,即一个类只能直接继承一个类,所以定义类结构的extends之后只能接着一个父类名。
优点:
继承提高了代码的复用性,使我们能够重用代码
代码共享,较少工作量每个子类拥有父类的属性和方法
缺点:
1.只要继承就必须拥有父类的属性和方法
2.增加了耦合性,当父类的常变量和方法被修改时,需要考虑到子类的修改