继承
构造器
构造器是类中的一个特殊的方法,该方法在对象实例化时被调用。构造器上午用途是当对象实例化时,初始化对象中的对象。构造器必须满足下面两个属性:
1. 构造器的名称必须与类名相同;
2. 构造器不能声明返回值,也不能返回void。
如下面的代码:
public class Pet {
String name;
int age;
String colore;
public Pet(){
System.out.println("我是构造函数"); //构造函数
}
public void show(){
System.out.println("你好我是:"+name+",今年"+age+"岁了,"+colore+"色的!");
}
}
构造器与方法类似,但它不是方法。每个类都必须有一个构造器,如果我们没有给类添加构造器,编译器会自动给我们添加一个构造器,默认构造器的形式参数列表是空的,如果我们给类添加了构造器,编译器就不会为类添加默认构造器。
构造器的使用
一个类可以有多个构造器,这种情况下,要调用哪个构造器就取决于new运算符所使用的实际参数。
继承(Inheritance)
什么是继承
在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式成为继承。
已有的类称为父类,而新类成为子类,父类也叫基类、超类。
使用继承不仅可以重用已有的代码,从而避免代码重复,还可以创建一个更容易维护和修改代码的程序。
##使用“is a”关系判断继承
“is a”关系用于判断父类和子类的继承关系是否正确。当使用继承时,我们必须能够说子类“is a(是一个)”父类。如果这个语句是真的,那么继承关系就是对的。
Java中继承的实现
在Java中,一个类使用关键字extends继承其他类。关键字extends出现在类声明时的类名后,extends后面跟着的是要继承的类的名称。例如,下面的语句用于声明Dog类是Pet类的子类:
public class Dog extends Pet{ //extends继承Pet类
String name;
public Dog(){
super(); //调用父类的构造器
System.out.println("我是子类构造函数");
}
}
单继承与多继承
在Java中,只能有一个父类
所有类的根类Object
Java语言API中包含了一个名为Object的特殊类,他是整个Java类层次中的根类。Object类在java.lang包中,是每个Java类的父类,要么是直接的父类,要么就是间接父类。
在Java中,当引用与一个字符串连接时,JVM将隐式地调用toString()方法。
方法重写
子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为,这称为方法重写,是OOP的特征之一。当子类重写父类的方法中,必须遵循如下的规则:
1. 子类的方法的返回值的类型、方法名和形式参数列表,必须和父类是相同的;
2. 访问修饰符必须不小于父类中的访问修饰符;
3. 子类中重写的异常不能抛出比父类更多的异常。
如下面的代码:
public class Dog extends Pet{
String name;
public Dog(){
super();
System.out.println("我是子类构造函数");
}
@Override // 方法重写关键字
public void show(){ // 方法重写
System.out.println("你好我是:"+name+",今年"+age+"岁了,"+colore+"色的!");
System.out.println("`````````汪汪汪`````````\n");
}
}
equals()方法
equals()方法比较两个对象,测试二者是否相等。比较运算符“==”用于检测是否两个引用指向同一对象。