Java 抽象类与final用法

 抽象类:

基于继承

抽象类和抽象方法的定义 父类的意义:  把子类共有的属性,抽取出来,达到代码的重用

抽象类不可被实例化 使用抽象类,限制实例化(只有派生类能实例化,父类不能实例化)  关键字:abstract  每个子类的实现不同

abstract也可用于方法---抽象方法  抽象方法没有方法体  抽象方法必须在抽象类里  抽象方法必须在子类中被实现,除非子类是抽象类(可以不实现) (抽象类没有方法体)

抽象方法的使用:  1)父类没有必要实例化,采用将父类定义成抽象类型  2)抽象类中的方法未必都是抽象方法     抽象方法必须在抽象类中  3)父类中定义方法,必须由子类实现,每个子类实现的内容不同,采用父类定义抽象方法  4)抽象类不可以被实例化  5)抽象方法必须由子类全部实现  6)抽象方法必须在抽象类中 子类重写抽象方法:  必须与父类抽象方法         名字相同  返回值相同  参数相同  访问权限相同

栗子:

package cn.jbit.epet.inherit2;

/**
 * 
 * @author: 房上的猫
 * 
 * @time: 下午3:51:59
 * 
 * 博客地址: https://www.cnblogs.com/lsy131479/
 *
 */

public class Pet {
    private String name = "无名氏";// 昵称
    private int health = 100;// 健康值
    private int love = 0;// 亲密度
    /**
     * 无参构造方法。
     */
    public Pet() {
        this.health = 95;
        System.out.println("执行宠物的无参构造方法。");
    }
    /**
     * 有参构造方法。
     * @param name  昵称
     */
    public Pet(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public int getHealth() {
        return health;
    }
    public int getLove() {
        return love;
    }
    /**
     * 输出宠物信息。
     */
    public void print() {
        System.out.println("宠物的自白:\n我的名字叫" + 
                this.name + ",我的健康值是" + this.health 
                + ",我和主人的亲密程度是" + this.love + "。");
    }
}
package cn.jbit.epet.inherit2;

/**
 * 
 * @author: 房上的猫
 * 
 * @time: 下午3:51:59
 * 
 * 博客地址: https://www.cnblogs.com/lsy131479/
 *
 */
 
 /*
  *狗狗类,宠物的子类。
  */

public class Dog extends Pet {
    private String strain;// 品种

    /**
     * 有参构造方法。
     * @param name   昵称
     * @param strain   品种
     */
    public Dog(String name, String strain) {
        super(name); //此处不能使用this.name=name;
        this.strain = strain;
    }
    
    public void setStrain(String strain) {
        this.strain = strain;
    }
    public String getStrain() {
        return strain;
    }
    
    public void print(){
        super.print();
        System.out.println("我是一只"+this.getStrain()+"犬。");
    }
}
package cn.jbit.epet.inherit2;

/**
 * 
 * @author: 房上的猫
 * 
 * @time: 下午3:51:59
 * 
 * 博客地址: https://www.cnblogs.com/lsy131479/
 *
 */

public class Penguin extends Pet {
    private String sex;// 性别
    /**
     * 有参构造方法。
     * @param name 昵称
     * @param sex 性别
     */
    public Penguin(String name, String sex) {
        super(name);
        this.sex = sex;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }    
    
    public void print(){
        super.print();
        System.out.println("我的性别是"+this.getSex()+"。");
    }
}
package cn.jbit.epet.inherit2;

/**
 * 
 * @author: 房上的猫
 * 
 * @time: 下午3:51:59
 * 
 * 博客地址: https://www.cnblogs.com/lsy131479/
 *
 */
 
 /*
  * 测试类,测试类的继承。
  */

public class Test {
    public static void main(String[] args) {
        // 1、创建宠物对象pet并输出信息
        Pet pet = new Pet("贝贝");
        //pet.print();
        // 2、创建狗狗对象dog并输出信息
        Dog dog = new Dog("欧欧", "雪娜瑞");
        dog.print();
        // 3、创建企鹅对象pgn并输出信息
        Penguin pgn = new Penguin("楠楠", "Q妹");
        pgn.print();
    }
}

final用法:

final修饰属性,方法和类

可以修饰类:最终版的类  不希望再被其他类继承

public finla class text{}

可以修饰方法:  方法不希望被重写

public class text{

        public final void text1(){}
}

可以修饰变量:(常量)最终版的属性值  属性不希望被修改

public class text{
            public final int a;
}

总结:  抽象类和抽象方法:    抽象类不能被实例化‘    可以有0~多个抽象方法    非抽象类必须重写父类的所有抽象方法  final修饰符:    修饰的类,不能被继承    修饰的方法,不能被子类重写    修饰的变量将编程常量,只能在初始化时进行赋值

(C) 房上的猫 。 保留所有权利。  https://www.cnblogs.com/lsy131479/

如需转载,请注明出处!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青枫的专栏

java基础学习_面向对象(下)02_day09总结

============================================================================= ==...

532
来自专栏Java帮帮-微信公众号-技术文章全总结

第九天 面向对象-类,封装,对象,private,this【悟空教程】

2186
来自专栏西安-晁州

js各种继承方式汇总

js中的各种继承实现汇总 首先定义一个父类: function Animal(name) { this.name = name || '动物' this...

3136
来自专栏Java帮帮-微信公众号-技术文章全总结

第十天 面向对象-继承抽象类【悟空教程】

1826
来自专栏小樱的经验随笔

【Java学习笔记之二十一】抽象类在Java继承中的用法小结

一、抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类...

2819
来自专栏阿凯的Excel

Python读书笔记18(初识自定义函数)

在分享自定义函数之前,我们要弄明白什么是函数、方法。之前的教程我有刻意用方法和函数两种方式来称呼具体的内容。例如删除列表的某个元素! ? 方法是函数的一种,类中...

3489
来自专栏待你如初见

Day06

782
来自专栏CSDN技术头条

在下函数式编程,有何贵干?

本文简单介绍了一下函数式编程的各种基本特性,希望能够对于准备使用函数式编程的人起到一定入门作用。 ? 函数式编程,一个一直以来都酷,很酷,非常酷的名词。虽然诞生...

1817
来自专栏软件开发

JavaSE学习总结(五)——封装,继承,多态很简单

java面向对象的三大特性是:封装、继承与多态,是面向对象编程的核心。 一、封装 简单说封装就是将同一类事物的特性与功能包装在一起,对外暴露调用的接口。 封装:...

2106
来自专栏Android机动车

数据结构学习笔记——串

枯眼望遥山隔水, 往来曾见几心知? 壶空怕酌一杯酒, 笔下难成和韵诗。 途路阻人离别久, 讯音无雁寄回迟。 孤灯夜守长寥寂, 夫忆妻兮父忆儿。

623

扫码关注云+社区