Java 抽象类与final用法

2018-02-28 07:49:00来源:cnblogs.com作者:房上的猫人点击

分享
第七城市

 抽象类:

基于继承

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

抽象类不可被实例化
使用抽象类,限制实例化(只有派生类能实例化,父类不能实例化)
 关键字: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()+"犬。");    }}
Dog 类
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()+"。");    }}
Penguin 类
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/

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

第七城市

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台