⭐️继承可以这样理解:
- 首先将一些变量和方法打包在一个类中当作一个工具。
- 其他类可以通关继承来获得这个工具的所有成员变量和属性。
(其中当作工具的类被称为父类,而这里的“其他类”是子类)
现将先将属性 age和name 与方法getAge() 和 getName包装成一个父类(Animal)如下:
而现在就可以这样写Monkey和Fish两个类:
最终可以达到以下的效果:
在Java中要实现类的继承关系需要用到extends关键字
🍑基本格式:
public class Son extends Father{
}
其中的Son类是子类,Father类是父类.
以上面的Fish类和Animal类的继承关系实现如下:
public class Animal {
//父类
private int age;
int name;
public int getAge() {
return age;
}
public int getName() {
return name;
}
}
public class Fish extends Animal{
//子类
private String gander;
public String getGander() {
return gander;
}
}
Java继承只能继承一个父类,但看可以继承父类继承的父类变相的达到多继承的效果。
子类可以访问继承自父类的成员变量和方法,下面展开介绍:
super.name
🍌例子:
public class Dog extends Animal{
public dog(int age, String name) {
super(age, name);
}
{
System.out.println(name);
//访问父类非private修饰的变量
System.out.println(this.getAge());
//访问父类中杯private修饰的变量
}
}
注:在Animal类(代码在第一个例子中)中name是default修饰的,age是private修饰的。
public class Fish extends Animal{
private String gander;
String name="子类中的名字";
public String getGander() {
return gander;
}
public static void main(String[] args) {
Fish f=new Fish();
System.out.println(f.name);
}
}
结果:
🍊例子:
public class Fish extends Animal{
private String gander;
String name="子类中的名字";
public String getGander() {
return gander;
}
@Override
public String getName(){
return "子类重写的方法";
}
public static void main(String[] args) {
Fish f=new Fish();
System.out.println(f.getName());
}
}
结果展示:
public class Fish extends Animal{
private String gander;
String name="子类中的名字";
{
super.name="用super关键字修改后的名字";
System.out.println(super.name);
}
public String getGander() {
return gander;
}
@Override
public String getName(){
return "子类重写的方法";
}
public static void main(String[] args) {
Fish f=new Fish();
}
}
结果展示:
⭐️总结:
调用时会优先调用子类的方法和属性,如果在子类中没有找到则会从父类中进行查找,若父类也没有则会报错,当然也空一通过super关键字直接访问父类的成员。
子类的构造方法会调用父类的构造方法,借组super关键字可以访问父类的构造方法。
⭐️super要放到第一行。
super()
。public class Animal {
//父类
private int age=0;
String name="父类名字";
public int getAge() {
return age;
}
public String getName() {
return name;
}
}
public class Fish extends Animal{
private String gender;
String name="子类中的名字";
public String getGender() {
return gender;
}
@Override
public String getName(){
return "子类重写的方法";
}
//构造方法
public Fish(String gender){
// super();
this.gender=gender;
}
public static void main(String[] args) {
Fish f=new Fish("雄");
System.out.println(f.getGender());
}
}
public Animal(int age,String name){
this.age=age;
this.name=name;
}
Fish类构造方法:
public Animal(int age,String name){
this.age=age;
this.name=name;
}