栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java—继承

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java—继承

继承概念及简单应用

目录

前言  

一、继承是什么?

 二、类之间的关系

三、继承的意义 

四、父子类关系

五、实现

六、super关键字  

七、final关键字

八、Object类

九、方法重写(Override)

1、概念:

2、方法重写的注意点

十、特性代码实现

总结


前言  

继承是面向对象语言的主要特征之一。继承使得程序的整个架构具有相当的灵活性,更具有层次,提高了代码的可重用性,降低了程序的编写难度。


一、继承是什么?(inheritance)

1、继承背后的思想就是基于存在的类构建新的类

2、从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对需求(子类拥有父类中所有的属性和方法,儿子比父亲更加强大)

3、约定:从其它类导出的类叫子类,被导出的类叫父类;Java中,除了Object类之外,所有的类都是子类,都有唯一(唯一的原因:Java单继承的)的父亲

 二、类之间的关系

1、Is-a 继承体现

2、Has-a 组合体现

3、Like-a 实现接口体现

三、继承的意义 

1、代码重用

2、体现不同抽象层次 

3、可轻松自定义子类

四、父子类关系

1、父类更抽象,更一般

2、子类更具体,更特殊

五、实现

extends关键字表示一个类继承了另一个类

代码如下:

package com.aaa.test;

public class Teacher {
    public static void main(String[] args) {
        Demo2 demo2 = new Demo2();
        demo2.demo2Test();
    }
}

class Demo1{
    public void demo1Test(){
        System.out.println("我是父类");
    }
}

class Demo2 extends Demo1{
    public void demo2Test(){
        System.out.println("我是子类");
    }
}

六、super关键字  

1、super代表的是父类对象的引用

2、当子父类的成员出现同名时,可以通过super来进行区分 

3、子类的构造方法中,通过super关键字调用父类的构造方法

强调:

1、当构造一个子类对象的时候一定会先调用父类的构造方法来构造父类的对象。调用父类构造方法的语句必须是子类构造方法中的第一条指令。

2、子类调用父类无参的构造方法是可以省略的

七、final关键字

1、final可以用来修饰变量、方法、类

2、final修饰的变量是一个常量。一旦赋了值就不能在修改。(常量一半都和static关键字配合使用)

3、final修饰类表示此类不能被继承 

4、final修饰方法代表此方法不能被重写

5、final修饰引用数据类型指代此引用不能改变(中途不能再去new或赋值)

八、Object类

Java中任何类都继承了Object类中的方法,主要有:

1、toString()

2、equals()

3、hashcode()

4、clone()

5、getClass()

6、finalize()

九、方法重写(Override)

1、概念

方法重写是指子类可以根据需求对父类继承来的方法进行改写,是多态机制的前奏

2、方法重写的注意点

(1、)重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值

(2、)重写方法不能使用比被重写方法更严格的访问权限

(3、)父类中私有的方法不能被重写

(4、)在子类中重写的方法中继续调用父类父类被重写的方法可以通过调用super.函数名获取

十、特性代码实现

1、子类生成的时候父类已经创建完成

代码如下:

package com.aaa.test;

public class Teacher {
    public static void main(String[] args) {
        Demo2 demo2 = new Demo2();
        demo2.demo2Test();
    }
}

class Demo1{
    
    public Demo1(){
        System.out.println("我是父类构造方法");
    }
    public void demo1Test(){
        System.out.println("我是父类");
    }
}

class Demo2 extends Demo1{
    
    public Demo2(){
        System.out.println("我是子类构造方法");
    }
    public void demo2Test(){
        System.out.println("我是子类");
    }
}

结果如下:

 

2、子类拥有父类所有的方法 

代码如下:

package com.aaa.test;

public class Teacher {
    public static void main(String[] args) {
        Demo2 demo2 = new Demo2();
        demo2.demo2Test();
    }
}

class Demo1{
    
    public Demo1(){
        System.out.println("我是父类构造方法");
    }
    public void demo1Test(){
        System.out.println("我是父类");
    }
}

class Demo2 extends Demo1{
    
    public Demo2(){
        super();
        System.out.println("我是子类构造方法");
    }
    public void demo2Test(){
        System.out.println("我是子类");
       demo1Test();
    }
}

结果如下:

 

 3、案例

代码如下:

package com.aaa.test;

public class Teachers {
    public static void main(String[] args) {
        JavaTeacher javaTeacher = new JavaTeacher("张三",24);
        javaTeacher.teaching();
    }
}

class TeacherA{
    
    private String name;
    private int age;
    
    public TeacherA(){}
    public TeacherA(String name,int age){
        this.name = name;
        this.age = age;
    }
    
    public void teaching(){
        System.out.println("准学教学");
    }
}

class JavaTeacher extends TeacherA{
    public JavaTeacher(String name,int age){
        super(name,age);
    }
    @Override
    public void teaching(){
        super.teaching();
        System.out.println("Java");
    }
}

结果如下:


总结

若有不足多多指教

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号