##Java的继承
继承是子类继承父类的所有属性和方法,在继承后可以直接调用所继承到的属性和方法
父类要更加概括,更加抽象,子类要更加具体
如 -动物
-老鼠
-鸡
##类继承的格式
在Java中采用extends关键字来声明一个类由另一个类继承得到
public class 父类名{
}
public class 子类名 extends 父类名{
}
##为什么需要继承的存在
有些时候会出现相似度或者重复度较高的部分,重复写相同的部分会导致代码过于庞大,
类似于将所需的方法写作函数,也可以将代码中相同的部分提取出组成一个父类
//首先声明一个父类学生类
public class Student {
String name;
int id;
int age;
int score;
//学生信息打印函数
public void show(){
System.out.println("姓名是:"+ name);
System.out.println("学号是:" + id);
System.out.println("年龄是" + age);
System.out.println("成绩是" + score);
}
}
//按照需求声明不同的所需子类
public class UNstu extends Student{
//根据需求设置子类所需的新的变量
int cet_4;
int cet_6;
//根据需求设置子类所需的新的函数
public void showUNstu(){
show();//原父类中方法的使用
System.out.println("四级成绩是:"+ cet_4);
System.out.println("六级成绩是:"+ cet_6);
}
}
//声明所需要的子类
public class Pupil extends Student{
}
//按照需要写入主函数赋值
public class Demo {
public static void main(String[] args){
UNstu unstu = new UNstu();
Pupil pupil = new Pupil();
unstu.name = "y";
unstu.id = 19;
unstu.age = 21;
unstu.score = 66;
pupil.name = "lj";
pupil.id = 19;
pupil.age = 8;
pupil.score = 100;
pupil.show();
//子类所特有的属性
unstu.cet_4 = 500;
unstu.cet_6 = 550;
unstu.showUNstu();
}
}
通过子类的使用可以发现,大学生相比于小学生需要额外写的信息只要在新声明的大学生这一子类中修改即可
不需要重复写父类这一段代码,通过继承的方式大大减少了代码中的冗余部分
super this 两个关键字
通过super关键字可以实现对父类中的访问,用来引用当前对象的父类
通过this关键字指明是引用自己的方法
public class Animal{
void eat(){
System.out.println("animal eat");
}
}
public class Dog extends Animal{
void eat(){
System.out.println("dog eat");
}
void eattest(){
this.eat();//调用自己方法
super.eat();//父类方法
}
}
public class Test{
public static void main(String[] args){
Animal animal = new Animal();
animal.eat();
Dog dog = new Dog();
dog.eattest();
}
}
public private protected适用范围
由public声明得到的类作用域覆盖于所有范围,包括当前类,同一package下的,子孙类和其他package
private声明得到的只作用于当前类
protected声明得到的可以用于当前类,同一package下以及子类
不写时得到的类只用于当前类以及同一package下