继承的语法:
1:编写父类(或者叫基类、超类)
public calss Pet(){
//公共的属性和方法
}
2:编写子类(SubClass),继承父类(SuperClass)
public class Dog extends Pet(){
//子类特有属性和方法
}
继承的作用:
1.方便修改代码
2.减少代码量
Java中只支持单根继承,即每个类只能有一个直接父类。
子类可以从父类中继承:
1:继承public和protected修饰的属性和方法,无论子类和父类是否在同一个包里。
2:继承默认权限修饰符修饰的属性和方法,但是子类和父类必须在同一个包里。
不能被继承的父类成员:
1.private修饰的成员
2.子类与父类不在同包, 使用默认访问权限的成员
3.构造方法
访问修饰符
子类访问父类成员
多重继承关系的初始化顺序
继承关系中的构造方法:
如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。
如果子类的构造方法中通过super显式调用父类的有参构造,则将执行父类相应的构造方法,而不执行父类的无参构造方法。
如果子类的构造方法中通过this显式调用自身的其他构造方法,则在相应构造方法中应用以上两条规则。
何时使用继承?
符合is-a关系的设计使用继承
将子类共有的属性和行为放到父类中
方法重写
方法重写:在子类中可以根据需求对从父类继承的方法进行重写,称为方法的重写或方法的覆盖。
方法重写的规则:
重写方法和被重写方法必须具有相同的方法名
重写方法和被重写方法必须具有相同的参数列表
重写方法的返回值类型必须和被重写方法的返回值相同或者是其子类
重写方法不能缩小被重写方法的访问权限
overloading和overriding有什么区别
重写与重载的区别:
方法重写特点(override)
前提:必须是继承关系
特征:
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问修饰符不能小于被重写方法的访问修饰符
不能抛出比父类更多的异常
方法重载的特点(overload)
前提:在同一个类中
特征:
方法名相同
参数列表必须不同
与返回值类型无关
与访问修饰符无关
Obejct类
Object类是所有类的父类。
在定义一个类时,没有使用extends关键字,也就是没有显式地继承某个类,那个这个类直接继承Object类。所有对象都继承Object类的方法。
Object类的常用方法
重写toString方法
public class Student {
String name = "Mary";
int age = 21;
public String toString() {
return "姓名:"+name+",年龄:"+age;
}
public static void main(String[] args) {
Student s = new Student();
System.out.println(s);//直接输出对象信息
System.out.println(s.toString());//调用父类方法输出对象信息 } }
重写equals方法
final修饰符
当使用final修饰一个类时,表明这个类不能被继承。final类中的成员变量可以根据需要设为final,但是final类中的所有成员方法会被隐式的指定为final方法。
使用final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。
final成员变量表示常量,只能被赋值一次,赋值后值不可以改变。
final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。
总结