古典音乐 (java基础 继承)

简介:

        从编码中,咱们总是在不知不觉的用继承,明确的调用,或是隐式的调用了java根类Object。什么是继承?官方上说,继承是从已有的类中派生出新的 类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。对我来说,继承就像古典音乐,来自音乐,却可有所不同。这就是说,古典音乐 extends 音乐

 

音乐类:Music.java

public class Music {
    
    private String name;
    private String kindName;
    private String description;
    
    /* ignore get/set methods of the parameters above*/
    
    public void play(){
        System.out.println(" music is playing");
    }
}

上面定义了音乐的一些属性成员 和 方法

 

古典音乐 :ClassicalMusic.java       

public class ClassicalMusic extends Music
{
    public static void main(String[] args) {
        ClassicalMusic classicalMusic = new ClassicalMusic();
        classicalMusic.setName("I am ClassicalMusic");
        classicalMusic.setKindName("Classical Music Kind");
        classicalMusic.play();
    }
}
#ouputs : music is playing

上面 古典音乐继承了音乐,通过继承,ClassicalMusic类叫做衍生类(derived class)。被继承的类Music类称为基类(base class)。所描述的关系是“is-a”关系。

 

使用继承需要记住的几点:

  •         继承可以达到复用代码的方法。这就像一把双刃剑,用的好就好,用的不好就不好。在合适的地方用会更好
  •         子类可以访问基类非private的属性和方法。
  •         自然,子类也有权利申请自己需要的方法。那就是下面的 Mehtod Overriding

                                          image

                                          古典中寻找真谛,正如java继承中吹出古典味

三.方法覆盖(Mehtod Overriding)

       在继承中,this 和 super是常见的关键词,super可以让我们很方便的调用到基类的方法或者构造器。在古典音乐中,我们加入属于他自己的播放方法。

@Override
public void play(){
    super.play();
    System.out.println(" but the Music is ClassicalMusic");
}
#outputs:
 music is playing
 but the Music is ClassicalMusic

 最常见到的代码,就是各个DAO层对基类DAO层的实现。

               
   

四.protected

对于protected而言,它指明就类用户而言,他是private,但是对于任何继承与此类的子类而言或者其他任何位于同一个包的类而言,他却是可以访问的。在项目中,SpringMVC Controller 的基类中存在对 日志,请求,响应,会话,还有service层的声明。

                         image

 

                                                image

        protected,就像保护着孩子的音乐细胞一样。只能让美好的,特定的音乐去访问。每个人都有每个人独特的品味,就像你mp3,或是手机里的音乐。那个属于你的去访问你音乐的细胞

 

五.向上转型

        is-a 的关系,表示古典音乐是属于音乐。它可以在广义上称为音乐,自然当一个人不懂古典音乐时,他完全可以把它当作音乐就ok了。把古典音乐当成音乐这就是向上转型。  其实我们第一个例子就用到了。

 

相关文章
|
1月前
|
Java 开发者
Java 面向对象新视界:揭秘子类如何“继承”父类精华,再添“创新”之笔
【6月更文挑战第16天】在Java的面向对象世界,子类继承父类的特性,如`Circle`继承`Shape`,展示“is-a”关系。子类不仅保留父类的`color`和`display`方法,还添加了`radius`属性及定制的显示逻辑。这种继承与创新允许代码复用,增强灵活性和可扩展性,使得构建复杂系统变得更加高效和模块化。通过持续的继承与定制,开发者能构建出一系列独具特色的类,充分展现面向对象编程的力量。
|
17天前
|
Java 程序员
【Java探索之旅】继承概念_语法_父类的成员访问
【Java探索之旅】继承概念_语法_父类的成员访问
29 10
|
16天前
|
安全 Java 开发者
Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?
Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?
19 1
|
23天前
|
Java 数据安全/隐私保护
Java中的类继承与多态详解
Java中的类继承与多态详解
|
26天前
|
Java 编译器
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
|
1月前
|
安全 Java
|
1月前
|
安全 Java
深度解读Java的继承和多态的特性
深度解读Java的继承和多态的特性
|
1月前
|
Java 数据安全/隐私保护
Java基础之类封装、继承、多态
Java基础之类封装、继承、多态
18 4
|
1月前
|
Java
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
Java面向对象特征(二)----- 继承
|
1月前
|
Java 开发者
JAVA多线程初学者必看:为何选择继承Thread还是Runnable,这其中有何玄机?
【6月更文挑战第19天】在Java中创建线程,可选择继承Thread类或实现Runnable接口。继承Thread直接运行,但限制了多重继承;实现Runnable更灵活,允许多线程共享资源且利于代码组织。推荐实现Runnable接口,以保持类的继承灵活性和更好的资源管理。