java7---final关键字、abstract和接口

java7—final关键字、abstract和接口

final关键字

  • 为什么会有final关键字?
由于继承中有一个方法重写的现象,而有时候我们不想写让子类去重写父类的方法。这时候就出现了final关键字。
final关键字可以修饰类,变量,成员方法。
  • final修饰特点

    修饰类:被修饰类不能被继承。
    修饰方法:被修饰的方法不能被重写。
    修饰变量:被修饰的变量不能被赋值,因为被赋值过的量就变为常量。
    

abstract

  • abstract不能和哪些关键字共存?

    private    冲突
    final      冲突
    static     不能共存 无意义
    

接口

  • 概述

    为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现。
    
  • 接口特点

    a:接口用关键字interface表示		 格式: 	interface 接口名 {}
    	b:类实现接口用implements表示	 格式:	class 类名 implements 接口名 {}
    	c:接口不能实例化
    		那么,接口如何实例化呢?
    		按照多态的方式来实例化。
    	d:接口的子类
    		a:可以是抽象类。但是意义不大。
    		b:可以是具体类。要重写接口中的所有抽象方法。
    
  • 接口的成员特点

    接口成员特点
    	成员变量;只能是常量,并且是静态的。
    			默认修饰符:public static final
    			建议:自己手动给出。
    	构造方法:接口没有构造方法。
    	成员方法:只能是抽象方法。
    			默认修饰符:public abstract
    			建议:自己手动给出。
    
  • 类与类,类与接口,接口与接口的关系

    a:类与类:
    		继承关系,只能单继承,可以多层继承。
    	b:类与接口:
    		实现关系,可以单实现,也可以多实现。
    		并且还可以在继承一个类的同时实现多个接口。
    	c:接口与接口:
    		继承关系,可以单继承,也可以多继承。
    
  • 抽象类和接口的区别

    成员区别
    	抽象类:
    		成员变量:可以变量,也可以常量
    		构造方法:有
    		成员方法:可以抽象,也可以非抽象
    	接口:
    		成员变量:只可以常量
    		成员方法:只可以抽象	
    关系区别
    	类与类
    		继承,单继承
    	类与接口
    		实现,单实现,多实现
    	接口与接口
    		继承,单继承,多继承	
    设计理念区别
    	抽象类 	被继承体现的是:”is a”的关系。	抽象类中定义的是该继承体系的共性功能。
    	接口 	被实现体现的是:”like a”的关系。	接口中定义的是该继承体系的扩展功能。
    

    案例演示

传智播客的老师有基础班的,也有就业班的。
共性:
	属性:姓名,年龄
	功能:讲课。
现在又要针对日语这种小语种单独开班,
需要部分基础班老师和部分就业班老师会说日语。
请用所学知识把上面的内容用代码体现。
答:1.  public class MyTest {
    public static void main(String[] args) {

        /*
         * 传智播客的老师有基础班的,也有就业班的。
         * 共性:
         *     属性:姓名,年龄
         *     功能:讲课。
         * 现在又要针对日语这种小语种单独开班,
         * 需要部分基础班老师和部分就业班老师会说日语。
         * 请用所学知识把上面的内容用代码体现。
         */

        Teacher1 teacher1 = new Teacher1();
        StandUp ab=teacher1;
        ab.name="钢铁侠";
        ab.age=22;
        System.out.println(ab.name);
        System.out.println(ab.age);
        ab.lecture();
        ((Teacher1) ab).SpeakJapanese();

        Teacher2 teacher2 = new Teacher2();
        StandUp an=teacher2;
        an.name="雷神";
        an.age=23;
        System.out.println(an.name);
        System.out.println(an.age);
        an.lecture();
        ((Teacher2) an).SpeakJapanese();


    }
2.   public abstract class StandUp {
    
    public String name;
    public int age;
    public abstract void lecture();

}
3.  public class StartClass extends StandUp {
    @Override
    public void lecture() {
        System.out.println("上课");
    }
}
4.  public interface SpeakJapaneseInterface {
    void SpeakJapanese();
}
5.  public class Teacher1 extends StartClass implements SpeakJapaneseInterface{
    @Override
    public void lecture() {
        System.out.println("基础班老师");
    }

    @Override
    public void SpeakJapanese() {
        System.out.println("会日语");
    }
}
6.  public class Teacher2 extends StartClass implements SpeakJapaneseInterface{
    @Override
    public void lecture() {
        System.out.println("就业班老师");
    }

    @Override
    public void SpeakJapanese() {
        System.out.println("也会日语");
    }
}
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北风lo.

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值