• Java从零学起(七)----面向对象(中)


    🎊前言: 

    俗话说:“千里之行始于足下”,今天是Java从零学起系列的第七篇,万事开头难,要坚持哦!本篇文章主要是Java程序面向对象的知识。

    目录

    1.什么是继承?

    💡父类(也称超类):

    💡子类:

    实例:

     📌父类:

    📌子类1:

    📌子类2:  

    📢划重点:

    2.方法重写

    实例:

    3.super关键字

    实例:

    4.final关键字


    活动地址:CSDN21天学习挑战赛

    1.什么是继承?

    💡父类(也称超类):

    被其它类继承的类;

    💡子类:

    去继承的类;

           类与类之间存在着相同的部分,比如:成员变量或者是方法;继承的有点显而易见,增强了代码的复用性,提高了开发效率,降低了程序产生的错误的可能性。子类在继承父类时需要使用extends关键字,语法格式如下:

    class 父类名{

    ............

    }

    class 子类名 extends 父类名{

    .............

    }

    实例:

     📌父类:

    1. public class Animal {
    2. private String name;
    3. private int id;
    4. public Animal(String myName, int myid) {
    5. name = myName;
    6. id = myid;
    7. }
    8. public void eat(){
    9. System.out.println(name+"正在吃");
    10. }
    11. public void sleep(){
    12. System.out.println(name+"正在睡");
    13. }
    14. public void introduction() {
    15. System.out.println("大家好!我是" + id + "号" + name + ".");
    16. }
    17. }

    📌子类1:

    1. public class Penguin extends Animal {
    2. public Penguin(String myName, int myid) {
    3. super(myName, myid);
    4. }
    5. }

    注:子类除了继承父类的成员变量和方法,还可以有自己的私有成员变量和方法 

    📌子类2:  

    1. public class Mouse extends Animal {
    2. private int age;
    3. public int getAge() {
    4. return age;
    5. }
    6. public void setAge(int age) {
    7. this.age = age;
    8. }
    9. public Mouse(String myName, int myid) {
    10. super(myName, myid);
    11. }
    12. public void Age() {
    13. System.out.println("我今年"+getAge()+"了!");
    14. }
    15. }

    📢划重点:

    • 在Java中,类只支持 单继承,不允许多继承。也就是说,一个类只能有一个直接父类,但是一个父类可以被多个子类继承;就像是儿子只有一个爹,而一个爹可以有多个儿子一样;
    • 在Java中,子类可以被其他类继承,称为多层继承;就像是爷爷,爸爸,孙子这样一种关系;
    • 在继承中,子类不能访问父类的私有成员变量和私有方法,注意子类是继承父类私有成员变量和方法的,仅仅是不能访问,不能使用;

    2.方法重写

           在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类方法进行重写。在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表和返回值类型,且在子类重写的方法不能比父类方法更加严格的访问权限。

    实例:

    1. //父类
    2. class Animal {
    3. void shout() {
    4. // TODO Auto-generated method stub
    5. System.out.println("动物发出叫声");
    6. }
    7. }
    8. class Dog extends Animal{
    9. //重写父类中的shout方法
    10. void shout() {
    11. System.out.println("汪汪汪......");
    12. }
    13. }
    14. //主类
    15. public class Main{
    16. public static void main(String[] args) {
    17. Dog dog=new Dog();//创建Dog类实例对象
    18. dog.shout(); //调用Dog类中重写的shout方法
    19. }
    20. }
    21. /*运行结果
    22. 汪汪汪......
    23. */

    3.super关键字

    super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。语法格式如下:

    super.成员变量

    super.成员方法(参数1,参数2...)

    实例:

    1. //父类
    2. class Animal {
    3. private String name;
    4. private int age;
    5. public Animal(String name,int age) {
    6. this.name=name;
    7. this.age=age;
    8. }
    9. public String getName() {
    10. return name;
    11. }
    12. public void setName(String name) {
    13. this.name = name;
    14. }
    15. public int getAge() {
    16. return age;
    17. }
    18. public void setAge(int age) {
    19. this.age = age;
    20. }
    21. public String info() {
    22. return "名字:"+this.getName()+",年龄:"+this.getAge();
    23. }
    24. }
    25. class Dog extends Animal{
    26. private String color;
    27. public Dog(String name,int age,String color) {
    28. super(name, age);
    29. this.setColor(color);
    30. }
    31. public String getColor() {
    32. return color;
    33. }
    34. public void setColor(String color) {
    35. this.color = color;
    36. }
    37. //重写父类中的info方法
    38. public String info() {
    39. return super.info()+",颜色:"+this.getColor();
    40. }
    41. }
    42. //主类
    43. public class Main{
    44. public static void main(String[] args) {
    45. Dog dog=new Dog("柴犬",2,"黄色");//创建Dog类实例对象
    46. System.out.println(dog.info()); //调用Dog类中重写的shout方法
    47. }
    48. }
    49. /*运行结果
    50. 名字:柴犬,年龄:2,颜色:黄色
    51. */

    4.final关键字

    • 使用final修饰的类不能被继承(相当于绝育😁);
    • 使用final修饰的方法不能被子类重写;
    • 使用final修饰的变量是常量,不可以被修改;
  • 相关阅读:
    基于微服务、Java、Springcloud、Vue、MySQL开发的智慧工地管理系统源码
    【软件分析第12讲-学习笔记】可满足性模理论 Satisfiability Modulo Theories
    【maptplotlib大全图】一段代码洞查matplotlib图片真谛
    git commit报错:running pre-commit hook: lint-staged
    邱锡鹏神经网络怎么样,邱锡鹏神经网络答案
    el-date-picker 有效时间精确到时分秒 且给有效时间添加标记
    Python中的日期和时间
    IB数学EE主题选择及研究方法规定
    Linux_文件系统(内存角度)
    ELK分布式日志
  • 原文地址:https://blog.csdn.net/weixin_66170039/article/details/126275890