一.类的继承
1.继承的作用:当我们需要定义一个类,且这个类某部分属性与行为与之前所定义的一个类的属性与行为相同时,可以使用继承。这样我们就省去编写与之前定义的一个类相同的代码。继承的称为子类,被继承的成为父类。如:UNStudent(子类) 继承了 Student(父类)。
2.继承的方法:使用 extends 关键字。继承后,子类就自动具有了父类的属性和方法。一个对象只能调用在其定义的类型及其父类中声明了的属性和方法
如: public class UNStudent extends Student{
}
3.子类除了拥有父类的属性和方法外,还可以另外定义属性与方法。
4.方法的重写:方法的定义不变,仅仅重写方法体。即不改变方法的属性,返回值,方法名,参数列表。如果子类重写了父类的方法,则子类对象会调用重写之后的方法。
注:与重载的区别。重载是方法的属性,返回值,方法名相同,参数列表不同。
如:重载: public void setName(string n){
}
public void setName(string n,int h){
}
重写: public void study(){
System.out.println("Student类中的学习方法,学生的名字是"+name);
}
public void study(){
System.out.println("UNStudent学习,学生的名字是"+name);
}
5.自动转型:对象是调用父类的方法还是子类的方法,取决于对象本身的类型。即 new 什么类型。前提,父类中必须有所调用的方法(如下,若Student 中无 study() 方法,自动转型时就不能调用)。
Student stu = new Student();
stu.setName("***");
stu.study();
//UNStudent是Student的继承
UNStudent stu1 = new UNStudent();
stu1.setName("***");
stu1.study();
//自动转型:子类对象的类型可以自动转成父类的类型
Student stu2 = new UNStudent();
stu2.setName("***");
stu2.study();
6.多态:相同的类型的对象调用相同分的方法的时候,由于继承和重写以及重载机制,得到的结果不一定相同。
二.接口
1.接口的定义:使用 interface 关键字。
如:public interface
Person {
public static final String
school="湖南大学";
public void
sleep();
}
2.接口的特点。如要定义一个属性,此属性必须为常量,属性为 public static final ,其中public static final 三个关键字可任意属于其中的一个,两个,三个或一个都不输入。若定义一个方法,则方法体必须为空。接口时不能创建对象的(如:Person per=new Person()是不行的)。
3.接口的实现:使用 implements 关键字。实现后必须重写接口中的定义的方法。
如:public class
Student implements Person{
……
public void sleep(){
System.out.println(school+name+"睡觉!"); }
……
}
ps:
一个类只能继承一个父类
class A;
class B extends A;
一个类可以实现多个接口
interface C;
interface D;
class E implements C,D;
一个类可以在继承父类的同时实现多个接口
class F extends A implements C,D;
一个接口可以继承多个接口
interface G extends C,D;