子 继承 父 ,子类中拥有父亲中的功能,儿子不需要重复定义 重复的做一些事情
为什么要继承?实现代码的重用
基类—>派生出—>新的类
在JAVA中使用extends关键字来表示继承关系, 同一类的事务,都可以使用继承关系来实现设计。
人类(基类/父类 把人共有的属性和行为定义在基类中,让其他类去继承即可)
学生 姓名,性别,年龄 吃东西(){ }
老师 姓名,性别,年龄 吃东西(){ }
工人 姓名,性别,年龄 吃东西(){ }
....
代码复用,子继承父之后,共有的定义在父类中,子类不用定义也可以访问到父类中的功能
代码扩展,在自己类中扩展自己特有的功能,不影响别的类
继承的形式: 访问权限修饰符 子类名 extends 父类名{子类体}
package demo1;
/*
基类/父类 定义本类型中共有的属性和行为
当一个类没有使用extends继承其他类时,这个默认继承Object类,Object类是java中所有类的基类(父类)
*/
public class Animal extends Object{
private String name;
private int age;
public void eat(){
System.out.println("动物吃东西");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package demo1;
/*
子类 extends 继承父类
拥父类中的行为和属性, 但是不能直接对父类中的私有成员进行访问
*/
public class Dog extends Animal{
public void play(){
System.out.println("狗会玩耍");//狗会玩是狗类自己特有的功能
}
}
狗会玩,是狗类自己特有的功能
子类 extends 继承父类, 拥父类中的行为和属性, 但是不能直接对父类中的私有成员进行访问。
虽然父类的属性是私有的,子类不能直接访问,但是可以通过公共的set get方法进行访问
package com.ffyc.javaoop.day3.demo1;
public class Test1 {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("旺财");
dog.setAge(3);
dog.eat();//eat()是在父类(Animal类中定义的功能) 代码复用
//dog.name="";子类不能访问父类中私有的
}
}
哮天犬 继承 Dog,Dog 继承 Animal,哮天犬会拥有Dog类和Animal类的属性和方法
继承中的传递 多层继承 ,但是不允许一个类直接继承多个类
继承的传递性 :C类从B类继承,B类又从A类继承,那么C类就具有B类和A类的所有非私有属性和非私有方法。
当一个没有继承任何一个类时,jvm会默认让类继承Object类 ,Object是 java为所有类提供的基类
package demo1;
public class XiaoTianQuan extends Dog{
public void fly(){
System.out.println("哮天犬会飞");
}
}
public class Test2{
public static void main(String[] args) {
XiaoTianQuan xtq = new XiaoTianQuan();
xtq.setName("哮天犬");
xtq.setAge(500);
xtq.eat();
xtq.play();
xtq.fly();//自己的扩展功能
}
}