package day08;
/*
//定义学生类
class Student{
String name;
int age;
public Student(){
}
//getXX()和setXX()
public void eat(){
System.out.println("吃饭");
}
}
//定义老师类
class Teacher{
String name;
int age;
public Teacher(){
}
//getXX()和setXX()
public void eat(){
System.out.println("吃饭");
}
}
*/
//基类
class Person{
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
//派生类
class Student extends Person{
}
class Teacher extends Person{
}
/*
* 我们观察上面两个代码:
* 发现name,age成员变量,以及get和set方法,还有eat()等都是相同的
* 那么,我们每一次定义这样的类的时候,都要把这些重复的内容都重新定义一边。
* 麻烦不,麻烦,所以,我们要考虑改进。
* 如何改进?
* 我这样想的:我能不能把这些相同的内容给定义到一个独立的类中
* 然后,让这多个类和这个独立的类产生一个关系,有了这个关系后
* 着多个类就可以具备这个独立的类的功能。
* 为了实现这个效果,java就提供一个技术:继承
*
* 父亲:
* 4个儿子
* 集成这么表示?集成的格式是什么样子的呢?
* class Fu{}
*
* class Zi extends Fu{}
* 我们就回头修改我们的代码:
* class Person{
* String name;
* int age;
* public Person(){}
* //get 和set
* public void eat(){
* System.out.println("吃饭");
* }
* }
* 继承
* class Zi extends Fu{
* public Zi(){}
* }
* class Teacher extends Fu{
* public Teacher(){}
* }
*
* //如何实现继承
* java提供关键字:extends
* 格式:
* class 子类 extends 父类{}
* 好处:
* A:提高了代码的复用性
* B:提高了代码的维护性
* C:让类与类之间产生了关系,是多态的前提
* 类与类产生了关系,其实也是继承的一个弊端
* 类的耦合性增强了
* 开发的原则:
* 高内聚,低耦合
* 耦合:类与类的关系。
* 内聚:就是自己完成某件事情的能力
*
* Java中继承的特点:
* A:Java只支持单继承,不支持多继承
* B:Java支持多层继承
* 举例:B-》A
* C-》B
* 结论:C-》A
*
* 继承中成员变量的关系:
* A:子类中的成员变量和父类中的成员变量名称不一样。
* B:子类中的成员变量和父类的成员变量名称一样,这个怎么办?
* 在子类方法中访问一个变量的查找顺序:
* a:在子类方法的局部范围找,有就使用
* b:在子类的成员范围找,有就使用
* c:在父类的成员范围找,有就使用
* d:如果还找不到,就报错
*
* */
public class ExtendsDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student sd = new Student();
sd.eat();
sd.sleep();
System.out.println("------");
Teacher te = new Teacher();
te.eat();
te.sleep();
}
}