`
120153216
  • 浏览: 61715 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JAVA基础

    博客分类:
  • java
阅读更多
final关键字的使用,抽象类与接口的概念 收藏 
final关键字的使用,抽象类与接口的概念 

l        -----------------------------------------------------Final 关键字-----------------------------------------------------

在java中可以使用final关键字来声明 类 变量 方法 

·final标记的类不能被继承

//final标识的类不能被继承 即不能有子类

final class A1 {

}

class B1 extends A1 {

}
 

 

·final标记的方法不能被子类覆写

//final标记的方法 不能被子类覆写

class A2 {

    public final void fun() {

    }

}

/*  class B2 extends A2 {

    //覆写A类中的fun方法

    public void fun() {

    }

}*/
 

 

·final声明的变量(成员变量和局部变量)即为常量 只能赋值一次

class A3 {

    final String NAME = "哈维";

    public void fun() {

    //  name = "戈多";

    }

}

//被final标记的变量最好用大写表示
 

Public :所有人都可以访问 访问权限最大

Static :静态 是所有对象公有的

Final :常量 

Public static final 标记的为全局常量  public static final NAME = “”;(全局常量)

 

l        ----------------------------------------------------抽象类----------------------------------------------------------------

抽象类的概念:就是含有抽象方法的类 

抽象方法:就是一个只有声明而没有实现的方法(没有方法体的方法)

 

抽象类和普通类的区别

       ·比普通类的定义中多出了一个抽象方法 普通类的定义在抽象类中都实用

       ·抽象类在类的声明处要使用abstract 声明为抽象类 抽象方法也是

 

l        抽象类的定义:

1.      抽象类必须用 abstract关键字类修饰 abstract class A {}

2.      抽象类中必须有抽象方法 抽象方法也要用 abstract来修饰 public abstract void fun()

且抽象方法只有声明没有实现

          普通类:变量 常量 方法  抽象类:变量 常量 方法 抽象方法

 

l        抽象类的使用规则

abstract class A4 {

    //抽象类中不能含有 final声明

    //final String name;

    int age;

    //抽象方法 只需声明而不需要实现

    public abstract void fun1();

    public abstract void fun2();

    public void fun3() {

       System.out.println("父类的非抽象方法");

    }

}

    //B4 是一个普通类 一般而言抽象类必须要有子类去实现

class B4 extends A4 {

    //抽象类的子类(如果此类是普通类)则必须覆写抽象类的所有抽象方法

    public void fun1() {

       System.out.println("覆写了父类的抽象方法fun1");

    }

    public void fun2() {

       System.out.println("覆写了父类的抽象方法fun2");

    }

}

//子类是抽象类 则可以不必覆写父类中的全部抽象方法

abstract class C4 extends A4{   }

public class Demo04_AbstractClass {

    public static void main(String[] args) {

       //抽象类不能被实例化 

       //new A4();

       B4 b4 = new B4();

       b4.fun1();

       b4.fun2();

       b4.fun3();

    }

}
 

·抽象类中必须要有抽象方法,抽象方法只需声明 不需要去实现

 

·抽象类不能直接被实例化 因此必须要由子类去实现 如果子类是普通类 则必须覆写抽象类中全部的抽象方法 如果子类是抽象类 则可以不必覆写父类中的抽象方法

 

·抽象类不能被直接实例化,即不能直接通过new关键字来实例化抽象类

·抽象类也属于java的单继承

 

l        抽象类的思考

 

n        抽象类中能否有构造方法?

abstract class A5 {

    private String info;

    //抽象类中的构造方法

    public A5() {

       System.out.println("父类A5的无参构造被调用");

    }

    //抽象类中 构造方法的重载

    public A5(String info) {

       System.out.println("父类A5含参构造被调用");

    }

    //抽象方法

    public abstract void fun();

}

class B5 extends A5 {

    //子类中的构造方法

    public B5() {

       System.out.println("子类B5被实例化");

    }

    //子类覆写父类的抽象方法

    public void fun() {

       System.out.println("抽象父类中的fun方法被覆写");

    }

}

public class Demo05_AbstractClassContructor {

    public static void main(String[] args) {

       //子类在实例化时 会先调用父类的构造方法 因此抽象类必须有构造方法

       B5 b5 = new B5();

       b5.fun();

    }

}

//抽象类是由子类去实现的 类的实例化要调用类的构造方法 子类在实例化时要先调用父类的构造方法 因此 抽象类中一定有构造方法
 

 

n        抽象类能否由 final 来声明?

不能 final标记的类不能被继承 而抽象类必须由子类来实现 因此 抽象类不能使用final来标记

 

 

l        --------------------------------------------------接口(interface)-----------------------------------------------------

如果在抽象类中全部都是抽象方法 和 全局变量 那么该类则用接口来表示 

接口中的全局变量 public static final String NAME;

接口的访问权限永远是 public 

接口在程序中叫做实现 即接口是通过子类实现的

l        接口中包括

·常量   ·抽象方法

l        接口的定义

Interface 接口名 {常量 抽象方法}

l        接口的使用规则

·一个类可以实现多个接口 继承一个抽象方法  

Class 类名 extends 父类 implements 接口A,B {}

interface A6 {

    //常量 必须先赋值 String INFO;这是错误的

    //public static final String INFO = "接口";

    String INFO = "接口";

    //抽象方法

    //public abstract void fun1();

    public void fun1();

    //因为接口中本来就规定必须是常量和抽象方法 因此常量和抽象方法可以简化成上述的写法

}

interface B6 {

    double VERSION = 1.6;

    public void fun2();

}

 

abstract class C6 {

    public abstract void print();

}

//一个类可以实现多个接口 继承一个父类

class D6 extends C6 implements A6,B6  {

    //子类必须实现接口的全部抽象方法 (接口:实现;继承:覆写)

    public void fun1() {

       System.out.println("信息:"+this.INFO);

       System.out.println("版本号:"+this.VERSION);

    }

    public void fun2() {

       System.out.println("版本号:"+this.VERSION);

    }

    //覆写父类中的方法

    public void print() {

       this.fun1();

       this.fun2();

    }

}

public class Demo06_Interface {

    public static void main(String[] args) {

       D6 d6 = new D6();

       d6.print();

    }

}

 
 

·一个新的接口可以使用 extends 关键字去继承多个已有的接口 实现接口的多继承

       Interface 接口A  extends 接口B,接口C ,接口D { }

//接口A7

interface A7 {

    public void funA();

}

//接口B7

interface B7 {

    public void funB();

}

//接口C7继承了接口 A7 B7 注意:接口可以多继承 而抽象类不能多继承 

interface C7 extends A7,B7 {

    public void funC();

}

//抽象类D7 实现了接口 C7

abstract class D7 implements C7 {

    //接口C7中的抽象方法fun7

    public abstract void funC();

}

//类 E7 继承了 抽象类D7 实现了接口C7

class E7 extends D7 implements C7 {

    //funC()同时存在于 D7和C7中 但E7值认方法名

    public void funC() {

       System.out.println("Hello C7");

    }

    public void funA() {

       System.out.println("Hello A7");

    }

    public void funB() {

       System.out.println("Hello B7");

    }

}

public class Demo07_InterfaceExtends {

    public static void main(String[] args) {

       E7 e7 = new E7();

       e7.funA();

       e7.funB();

       e7.funC();

    }

}
 

1.      普通类<----(继承 普通类之间是单继承关系 不建议去继承一个普通类)---普通类

2.      普通类<----(继承 抽象类必须由子类去实现,子类必须覆写抽象类中所有的抽象方法)-------抽象类

3.      普通类<----(可实现多接口 接口由子类去实现 子类必须实现接口中所有的抽象方法) ------接  口

4.      抽象类<----(继承 抽象类间是单继承关系 抽象类子类可以不用覆写父类中的抽像方法)---抽象类

5.      抽象类<----(可实现多接口 抽象内中可以有非抽象方法 因此可以实现接口中的抽象方法) ---接口

6.      接口<----(多继承或单继承 不能是实现关系 接口在继承时可以不去覆写父接口中的方法)---接口

 

分享到:
评论

相关推荐

    JAVA零基础到高级进阶特训营 JAVA多线程并发设计+Spring高级+数据库开发+JAVA基础等

    这套课程既可以作为从零基础开始学习的JAVA基础到高级学习教程,对于有JAVA基础的同学来说可以略过前面的JAVA基础章节,直接学习后续的JAVA高级部分课程。更可以灵活的作为章节技术,进行针对性的JAVA学习。还是要...

    java基础知识大全(必看经典)

    Java 基础知识大全 本资源摘要信息是 Java 基础知识大全的总结,涵盖了 Java 语言的基本概念、特点、历史发展等方面的知识点。以下是本资源摘要信息的详细内容: 一、 Java 语言的特点 * 面向对象:Java 语言是...

    《Java基础入门》-课后习题答案.doc

    本文将对《Java 基础入门》课后习题答案进行总结,涵盖了 Java 基础知识点,包括 Java 开发入门、Java 基础类、变量类型、运算符、控制流语句、方法重载等。 一、Java 开发入门 * Java EE、Java SE、Java ME 是 ...

    《Java基础入门(第3版)》(Java):课后答案-docx文档

    《Java基础入门(第3版)》是一本针对Java初学者的教材,其课后答案文档提供了对书中习题的解答,旨在帮助读者巩固所学知识。Java是一种面向对象的编程语言,具备跨平台性,由Java虚拟机(JVM)负责解释执行。Java...

    JAVA 基础有由浅入神中高级视频

    市面上目前流传的java基础视频教程都是讲一些最基础的java语法和相关API的应用,然而用人单位对初级程序员的要求越来越高,那些讲解java基础语法的视频教程已经无法满足大众的学习要求。本套视频教程录制完中国第一...

    Java基础教程(第3版)_ppt.rar

    《Java基础教程(第3版)_ppt.rar》是一个包含多个PPT文件的压缩包,主要用于教学目的,提供了关于Java编程语言的基础知识。这个资源涵盖了Java的核心概念,从基本的类和对象到高级特性如多线程和数据库操作。以下是...

    Java基础案例教程(第2版)-教学设计.zip

    《Java基础案例教程(第2版)》是一本旨在教授初学者Java编程基础知识的教材,其教学设计旨在通过实例引导学生深入理解Java语言的核心概念。本教程覆盖了从环境搭建到程序设计的各个环节,旨在帮助学生建立起坚实的...

    Java基础加强系列视频课程

    资源名称:Java基础加强系列视频课程资源目录:【】黑马程序员Java基础加强(01-10)【】黑马程序员Java基础加强(11-20)【】黑马程序员Java基础加强(21-30)【】黑马程序员Java基础加强(31-40)【】黑马程序员...

    传智播客.黑马程序员《Java 基础入门》课后习题答案

    《Java 基础入门》课后习题答案 第 第 1 章 Java 开发入门 一、填空题 1、 Java EE、Java SE、Java ME 2、 JRE 3、 javac 4、 bin 5、 path、classpath 二、选择题 1、ABCD 2、C 3、D 4、B 5、B 三、简答题 1、 面向...

    Java基础实例大全.

    Java基础实例大全适合于初学者 这里是所有Java技术点的集合 每个技术点都有对应的例子。 经典制作不容错过。。。 特别是对Java书籍很迷惑,想看看实际例子的朋友,这里就有你所需要的. Java基础实例大全适合于初学...

    《Java基础案例教程(第2版)》课后习题答案1

    【Java基础知识点】 1. **Java的起源与特性** - Java是由SUN Microsystems公司(后被Oracle收购)开发的一种面向对象的编程语言。 - Java有三个主要版本:Java Standard Edition (JavaSE),用于桌面应用;Java ...

    黑马程序员java基础试题、笔记

    "黑马程序员java基础试题、笔记"这个压缩包资源为Java初学者和希望加入"黑马程序员"培训课程的学员提供了丰富的学习材料。这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须...

    Java 基础入门(传智播客出品).pdf

    Java 基础入门,适合初学入门java的同学

    java基础练习题(基础)精选

    Java基础练习题由本人整理并上传,非常适合于初学者加强巩固自己的知识,编程学好的唯一途径就是多练习。

    java基础知识的培训ppt

    java基础知识的培训ppt,对于java初学者来说可以有一些作用。

    java基础案例教程

    java基础的案例分析和实例教学,适合新手及回顾查阅,对于夯实基础有好处

    java基础知识 ppt

    java基础知识,帮助初学者更快更好地掌握java。ppt内容具体易懂,希望对刚接触java的初学者有所帮助。

    JAVA基础自学教程

    写的很详细,适合初学者,里面的讲解很丰富,很有学习价值,最好是配套一本详细的JAVA基础一起看,会有更好的效果

Global site tag (gtag.js) - Google Analytics