【JAVA】类的继承——一点点学习总结


前言

这里是!
从0开始学习JAVA的一些些整理与总结。


一、父类、子类的相关概念

Key Word : 单继承、多层次

父类(基类、超类) :父类下可以有多个不同的子类
子类(派生类) :一个子类只能继承一个父类

示例代码

父类代码示例:

public class fruit {
    //属性
    public String name;
    //水果名
    public String color;
    //水果颜色
    private int num;
    //水果数量

    //方法
    public void fruit()
    {
        System.out.println(name+" is "+color+".\nwe have "+num+" "+name+"s.");
    }
}

子类代码示例:

public class apple extends fruit
{
   //重点看上面的 extends 
}

主函数示例:

public class manage {
    public static void main(String[] args)
    {
        apple a=new apple();
        a.name="apple";
        a.color="red";
        a.num=2;
        a.fruit();
    }
}

输出结果:

在这里插入图片描述

二、继承的相关概念

在同一个包下,子类会继承父类中所有的属性和方法。

1.每一个类默认继承Object类、可以使用里面的方法

注意看这里出现的提示,这里提示出现方法不止有设置的方法,还有equals()等方法

在这里插入图片描述

2.继承会继承父类原有的方法

示例代码见上方

3.特殊情况

特殊情况:注意私有属性与方法受私有属性限制,只能在本类中使用,所以子类继承父类的私有属性以及方法后不能直接使用,具体使用方法可以见上一篇

代码示例:
父类函数中num修改成了pravite 属性

public class fruit {
    //属性
    public String name;
    //水果名
    public String color;
    //水果颜色
    private int num;
    //水果数量
    //使用private修饰的属性的方法
    //构造方法
    public void getnum(int num)
    {
        this.num=num;
    }

    //方法
    public void fruit()
    {
        System.out.println(name+" is "+color+".\nwe have "+num+" "+name+"s.");
    }
}

主函数示例:

public class manage {
    public static void main(String[] args)
    {
        apple a=new apple();
        a.name="apple";
        a.color="red";
        a.getnum(2);
        a.friut();
    }
}

输出:

在这里插入图片描述

三、方法重写

重写从父类中继承的得到的方法
1)必须应用在有继承关系的两个类之间
2)新方法的访问修饰符大于等于父类访问修饰符
新方法格式:(访问修饰符)返回值类型 父类方法名 (参数类型,参数名){内部重写的方法};

注意:参数要求个数、顺序与父类方法完全一致

方法重写:
{
①方法重写内如果想要保留父类原有的功能可以调用父类的方法
②调用父类方法的方式:super.父类方法名();
//this 表示本类对象 super 表示当前类的父类对象
}

方法重写代码示例:

public class apple extends fruit
{
    String taste;
    public void fruit()
    {
        System.out.println(name+" is "+color+".\n"+"It tastes "+taste+"!");
    }
}

主函数:

public class manage {
    public static void main(String[] args)
    {
        apple a=new apple();
        a.name="apple";
        a.color="red";
        a.getnum(2);
        a.taste="good";
        a.fruit();
    }
}

输出:

在这里插入图片描述

保留父类方法的方法重写

代码示例:
子函数代码

public class apple extends fruit
{
    String taste;
    public void fruit()
    {
        super.fruit();
        //System.out.println(name+" is "+color+".\n"+"It tastes "+taste+"!");
    }

}

主函数代码

public class manage {
    public static void main(String[] args)
    {
        apple a=new apple();
        a.name="apple";
        a.color="red";
        a.getnum(2);
        a.taste="good";
        a.fruit();
    }
}

输出

在这里插入图片描述

四、自动转型与强制转型相关知识

自动转型:(向上转型)
1)将子类对象转型为父类类型
2)自动转型格式:父类名 对象名 = new 子类名();
3)转型后这个新的对象只能调用子类中重写的方法,并优先执行该方法(受父类类型限制)
代码示例:
注意 :这里子类中单独定义的taste属性就无法调用,报错了

在这里插入图片描述

强制转型:向下转型
1)强制转型必须建立在该对象已经做了一次自动转型的基础上
2)强制转型格式:子类名 对象名 = (子类名)自动转型里的对象名

代码示例:
主函数

public class manage {
    public static void main(String[] args)
    {
        fruit a=new apple();
        a.name="apple";
        a.color="red";
        a.getnum(2);
        //a.taste="good";
        //a.fruit();

        //强制转型
        apple a2=(apple)a;
        a2.taste="good";
        a2.fruit();
    }
}

子类

public class apple extends fruit
{
    String taste;
    public void fruit()
    {
        super.fruit();
        System.out.println(name+" is "+color+".\n"+"It tastes "+taste+"!");
    }

}

输出

在这里插入图片描述

总结

以上就是总结的全部内容啦,只是一个简单的学习笔记兼总结,还希望大佬多多指点!
如果发现内容有误,欢迎大家指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值