zoukankan      html  css  js  c++  java
  • Java final关键字、抽象类、接口

    final关键字在Java中被称为完结器,表示最终的意思:
    final能声明类、方法、属性:
    1、使用final声明的类不能被继承;
    2、使用final声明的方法不能被重写;
    3、使用final声明的变量变成常量,不可以被修改。(常规大写)


    抽象类概念:
        包含一个抽象方法的类就是抽象类;
    抽象方法:
        声明而未被实现的方法,抽象方法必须使用abstract关键字声明
    抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法
    定义格式:
    abstract class className{
        属性;
        方法;
        抽象方法;
    }
    抽象类不能直接实例化,要通过其子类进行实例化。

    package com.jike.finalDemo;
    abstract class Abs{
    	private int age;
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void tell() {
    	}
    	public abstract void say();
    }
    class AbsDemo extends Abs{
    	public void say() {
    		System.out.println(getAge());
    	}
    }
    public class abstractDemo {
    
    	public static void main(String[] args) {
    		AbsDemo absDemo=new AbsDemo();
    		absDemo.setAge(50);
    		absDemo.say();
    	}
    
    }
    

     输出:

    50
    

    接口是Java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法组成
    接口的格式:
    interface interfaceName{
        全局常量
        抽象方法
    }
    接口的实现也必须通过子类,使用关键字implements,而接口是可以多实现的;
    一个子类可以同时继承抽象类和实现接口;
    一个接口不能继承一个抽象类,但是可以通过extends关键字同时继承多个接口,实现接口的多继承。

    package com.jike.finalDemo;
    interface Inter{
    	public static final int AGE=50;	//全局常量,大写
    	public abstract void tell();   //抽象方法
    }
    interface Inter2{
    	public abstract void say();
    }
    abstract class  Abs1{
    	public abstract void print();
    }
    class A extends Abs1 implements Inter,Inter2{	//接口的实现也必须通过子类,使用关键字implements,而接口是可以多实现的;一个子类可以同时继承抽象类和实现接口;
    	public void tell() {
    		System.out.println("A的tell方法");
    	}
    	public void say() {
    		System.out.println("say something");
    	}
    	public void print() {
    		System.out.println("print something");
    	}
    }
    interface Inter3 extends Inter,Inter2{	//接口可以继承多个接口,类不能多继承
    	
    }
    public class interfaceDemo {
    
    	public static void main(String[] args) {
    //		Inter i=new Inter();	//接口不能直接实例化
    		A a=new A();
    		a.tell();
    		System.out.println(Inter.AGE);
    		a.say();
    		a.print();
    	}
    
    }
    

     输出:

    A的tell方法
    50
    say something
    print something
    

    接口的应用:

    package com.jike.duotai;
    interface USB{
    	void start();
    	void stop();
    }
    class C{
    	public static void work(USB u) {
    		u.start();
    		System.out.println("工作中");
    		u.stop();
    	}
    }
    class USBDisk implements USB{
    	public void start() {
    		System.out.println("U盘开始工作");
    	}
    
    	public void stop() {
    		System.out.println("U盘停止工作");
    	}
    }
    class Printer implements USB{
    
    	@Override
    	public void start() {
    		System.out.println("打印机开始工作");
    	}
    
    	@Override
    	public void stop() {
    		System.out.println("打印机开始工作");
    	}
    }
    public class interDemo {
    
    	public static void main(String[] args) {
    		C.work(new USBDisk());
    		C.work(new Printer());
    	}
    
    }
    

     输出:

    U盘开始工作
    工作中
    U盘停止工作
    打印机开始工作
    工作中
    打印机开始工作
    
  • 相关阅读:
    Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
    HDFS高级开发培训课程之HDFS开发实例课件
    VS2010安装顽疾解决方法:error 25541 failed to open xml file
    程序猿正能量之祖母的坚持
    文件路径
    文件夹操作
    文件夹、文件操作
    C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
    linq to xml
    C#集合类型
  • 原文地址:https://www.cnblogs.com/zhhy236400/p/10443933.html
Copyright © 2011-2022 走看看