在java中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass)
子类是超类的一个功能上的扩展,它继承了超类定义的所有属性和方法,并且添加了特有功能
所有的类都继承自java.lang.Object类,所以说Object类是所有类的父类。如果在定义类时不做规定,自己定义的类直接继承自Object类
继承的语法
class 子类名 extends 父类名
extends关键字用来实现继承
访问修饰符
public:用public修饰的类成员(包括字段和)方法被称为公有的,外界可以直接存取公有数据,调用公有方法
private:用private修饰类成员称为私有的,类的私有成员只能被这个类的方法直接访问
protected: 用protected修饰的成员称为被保护的,类的保护成员允许其子类继承,为了使子类能够直接继承父类成员,
把这些成员(大部分是数据)说明为被保护的
default: 如果类成员前面没有任何访问修饰符,则称为默认,默认的类成员除了允许被其归属的类访问外,还允许
同一个包中的其他类访问
方法重写(override)
class 父类{
访问权限 方法返回值类型 方法1(参数1){
}
}
class 子类 extends 父类{
访问权限 方法返回值类型 方法1(参数1){
}
}
所谓覆盖 就是方法名称相同,但却在不同的场合做不同的事,子类重新定义了父类已有的方法,则称为方法覆盖
this关键字
this是指当前对象自己,当一个类要明确使用对象自己的变量或函数时应该加上this引用,例如:
public class Hello{
String s="Hello";
public Hello(String s)
{
System.out.println("s = " + s);
System.out.println("1 -> this.s = " + this.s);
this.s = s;
System.out.println("2 -> this.s = " + this.s);
}
public static void main(String[] args)
{
Hello x=new Hello("Hello World!");
}
}
super关键字
java方法的覆盖经常要用到的关键字,-super , 用来调用子类所复制父类的字段和方法
super.子类所复制父类的字段
super.子类所复制父类中的方法
static方法
子类不能覆盖父类中被声明的static方法
public class Person {
static String name;
static int age;
public static String talk(){
return "我是:"+name+", 今年:"+age+"岁";
}
}
显示的错误信息:
这个实例方法不能覆盖Person.talk这个static方法
final方法
子类不能覆盖父类中被声明的final方法
public class Person {
static String name;
static int age;
public final String talk(){
<span style="white-space:pre"> </span> return "我是:"+name+", 今年:"+age+"岁";
}
}
显示的错误信息:
子类不能覆盖来自父类Person的final方法
多层继承
class A{
//类主体
}
class B extends A{
//类主体
}
class C extends B{
//类主体
}
在Java类中不可以进行多重继承,但确是可以进行多层继承的。对于多层继承Java也只允许单继承,即一个子类只有一个父类,父类可以有多个子类。
继承的好处:
1.提高代码的重用性
2.让类和类之间产生关系,为多态创造了条件