继承:
怎样理解继承:
多个类中含有相同的属性和方法,把这些行为和方法抽取出来至单独的一个类中,之前需要的多个类就不需要在定义这些行为和方法而只是需要继承那单独的一个类就可以了。(把多个类中的相同内容提取出来定义到一个类中)
实现方法:
关键字:extends
格式:
class 子类名 extends 父类名{}
我们把被继承的类称为父类,超类或者基类,要继承的类称为子类或者派生类。
子类通过继承拥有了父类的属性和方法,并且自己也可以定义新的属性和方法。
继承优点:
1-提高了代码的复用性。
2-提高了代码的维护性
3-让类与类之间产生了关系,可实现多肽。(同样也有弊端,类的耦合性很强。关系紧密相互影响)
开发的原则:低耦合,高内聚
耦合:类与类之间的关系
内聚:自己实现某件事情的能力
下面通过一个案例来简单了解继承:
继承前:
定义一个学生类:
package day08;
public class Student {
public void eat(){
System.out.println("吃饭!");
}
public void study(){
System.out.println("学习!");
}
public void sleep(){
System.out.println("睡觉!");
}
}
定义一个老师类:
package day08;
public class Teacher {
public void eat(){
System.out.println("吃饭!");
}
public void study(){
System.out.println("学习!");
}
public void sleep(){
System.out.println("睡觉!");
}
}
测试类:
package day08;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
// 创建学生类对象
Student st = new Student();
st.eat();
st.study();
st.sleep();
//创建老师类对象
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*");
Teacher tc = new Teacher();
tc.eat();
tc.study();
tc.sleep();
}
}
输出:
吃饭!
学习!
睡觉!
*-*-*-*-*-*-*-*-*-*-*-*-*
吃饭!
学习!
睡觉!
继承后:
定义一个父类person类
package day08;
public class Person {
public void eat(){
System.out.println("吃饭!");
}
public void study(){
System.out.println("学习!");
}
public void sleep(){
System.out.println("睡觉!");
}
}
定义学生类:
package day08;
public class Student extends Person {
}
定义老师类:
package day08;
public class Teacher extends Person {
}
测试类:
package day08;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
// 创建学生类对象
Student st = new Student();
st.eat();
st.study();
st.sleep();
//创建老师类对象
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*");
Teacher tc = new Teacher();
tc.eat();
tc.study();
tc.sleep();
}
}
输出:
吃饭!
学习!
睡觉!
*-*-*-*-*-*-*-*-*-*-*-*-*
吃饭!
学习!
睡觉!