final修饰符

可以修饰类,方法,变量。

1, 当修饰类时,该类表示最终类,不能被其他类所继承。

2, 当修饰方法时,该方法不能被覆盖。

3, 当修饰变量时,该变量不能被修改。

public staticfinal double PI =3.1415;全局常量

抽象类 abstract

当很多子类中有相同的方法时,可以进行向上抽取,形成抽象方法。抽象方法没有函数体,函数用abstract关键字修饰。抽象方法必须存在于抽象类中。抽象类中可以有非抽象方法。

特点:

l        方法只有声明而没有实现时,该方法就是抽象方法,抽象方法必须被abstract关键字修饰,且该类也为抽象类,必须被abstract修饰。

l        抽象类不能被实例化,因为调用抽象方法,没有意义。

l        只有其子类实现了他的所有抽象方法,子类才能被实例化,如果子类没有实现所有的抽象方法,这子类也为抽象类。

Abstract 不可以和那些关键字组合

1,  private 私有了不能被子类发现。

2,  static 静态了直接类调用没意义

3,  final 既要被覆盖,又不能被覆盖,矛盾。

Employee.class=========================================================================

package EmployeeDemo;public abstract class Employee {private int id;private    String name;private double pay;protected int getId() {return id;}protected void setId(int id) {this.id = id;}protected String getName() {return name;}protected void setName(String name) {this.name = name;}protected double getPay() {return pay;}protected void setPay(double pay) {this.pay = pay;}Employee(int id, String name, double pay) {this.id = id;this.name = name;this.pay = pay;}public abstract void work();
}

Manager.class==================================================================================

package EmployeeDemo;public class Manager extends Employee {private double bonus;public Manager(int id, String name, double pay,double bouns) {super(id, name, pay);this.bonus = bouns;}public double getBonus() {return bonus;}public void setBonus(double bonus) {this.bonus = bonus;}@Overridepublic void work() {System.out.println(this.getName()+"'s work is Manage...");}}
Programmer.class=========================================================================
 package EmployeeDemo;

public class Programmer extends Employee {

 public Programmer(int id, String name, double pay) {super(id, name, pay);}

 @Overridepublic void work() {System.out.println(this.getName()+"'s work is codeing...");}

}

EmployeeDemo========================================================

package EmployeeDemo;public class EmployeeDemo {/*** @param args*/public static void main(String[] args) {Programmer p = new Programmer(01, "小明", 8000);Manager m = new Manager(02, "小咪", 7000,200);p.work();m.work();}
}

接口 interface   implements(实现)

接口中的方法全部必须是抽象方法。成员必须是全局常量

定义接口使用的是 interface而不是class

接口中常用的成员都有固定的修饰符

全局常量:public static final

抽象方法:public abstract

类与类之间是继承关系。类与接口之间是实现关系。

接口不可以实例化,只有子类实现了接口的所有抽象方法,子类才可以实例化,如果子类没有实现所有的抽象方法,则子类为抽象类,也不能实例化。

接口和实现接口的类,以及实现接口类的对象都可以直接调用常量。

Java 没多继承,但实现了多继承。一个类可以实现多个接口。

接口和接口之间可以多继承。

多态

//一种类型(普通类、抽象类、接口)可有多种形态
public static void main(String[] args) {Animal a = new Cat();Animal b = new Dog();//多态,一种类型可有多种形态//向下转型必须转成new出来的类型 如 ClassA b = new ClassC();   ClassC c = C(b);Dog d = (Dog)b;//向下转型,向下转型可以使转型后的类的特有方法有效。((Cat) a).cathMouse(); //right 向下转型
//      Cat cc = (Cat)b;   //转换异常!java.lang.ClassCastException   DuoTaiDemo.Dog cannot be cast to DuoTaiDemo.Cat
//      a.cathMouse();  error a.eat();//right, 可以调用共有的的方法。d.lookHome();//转型后 特有方法有效}
向上转型 :
Animal a = new Cat();Animal b = new Dog();
向下转型:Dog d = (Dog)b;//向下转型,向下转型可以使转型后的类的特有方法有效。((Cat) a).cathMouse(); //right 向下转型

a   instancsof A

用于判断 a对象是不是A类型的,是返回true,否则返回false。

多态中成员的特点:(没向下转型)

1, 成员变量

编译运行时都看等号的左边(父类)(在调用时,只有=左边的类型有的成员,才能被调用)

2, 成员方法

a)        编译时看(父类)左边,运行时看右边(子类)。

3, 静态方法

a)        编译运行都看左边

对于静态函数其实不需要定义对象。直接类名调用即可,可以说不牵扯多态

内部类

在分析一个事物时,如果该事物内部还有其他事物时,并且该内部的事物与该事物成员结合紧密,和该事物以外的其他事物联系很少时,可以使用内部类

相当于一种封装

l        在一个类的内部定义的类称为内部类。

l        访问特点

n        内部类可以直接访问外部类的成员,包括私有成员。

n        而外部类要访问内部类的成员必须要建立内部类的对象。

u      需要创建内部类的对象

举例(孙悟空飞进铁扇公主的里边)

可以很方便的访问内部类的成员。而不用通过方法等间接的去调用

修饰符:

当内部类有静态成员则内部类必须被静态修饰,即为静态类

package InnerClassDemo;/*** * 运行后生成三个class文件* * Outer.class Outer$Inner.class InnerClassDemo.class* * */class Body {private String breatheOrgan = "嘴";class Lung// 肺{void breathe() {System.out.println("breathe  with ..." + breatheOrgan);// 内部类可以直接访问外部类的成员}}public void breatheSys() {// 外部类需要访问内部类时必须建立连接Lung l = new Lung();l.breathe();}
}public class InnerClassDemo {public static void main(String[] args) {// Body b = new Body();// b.breatheSys();// 在外部直接访问内部类Body.Lung l = (new Body()).new Lung();l.breathe();}
}

final修饰符、抽象类、接口、多态、内部类的简单小结相关推荐

  1. 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda

    包 什么是包? 包是用来分门别类的管理各种不同类的,类似于文件夹.建包利于程序的管理和维护. 建包的语法格式:package 公司域名倒写.技术名称.报名建议全部英文小写,且具备意义. package ...

  2. JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

    JAVA基础-栈与堆,static.final修饰符.内部类和Java内存分配 发布时间: 2013/01/12 22:29 QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 百度空间 百度搜藏 开心网 ...

  3. 11.0_[Java 继承]-继承/重写/抽象类/抽象方法/ final 修饰符

    ################################################## 目录 继承 什么是继承 继承语法 super 关键字 如何使用继承 java.lang.Objec ...

  4. private static final 修饰符

    java修饰符分类修饰符字段修饰符方法修饰符根据功能同主要分下几种 1.权限访问修饰符 public,protected,default,private,四种级别修饰符都用来修饰类.方法和字段 包外 ...

  5. Java final修饰符的作用,Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  6. java final修饰符_浅谈JAVA中的final修饰符

    final修饰符是JAVA中比较简单的一个修饰符,很多人通过书本就可以熟练掌握,但我学的时候,虽然感觉会用了,但是并不是十分理解这个修饰符,所以我找了相关资料,把我的个人理解分享给大家~~ final ...

  7. java final修饰符_java final修饰符详解,final修饰方法

    之前给大家讲过java final修饰符final修饰变量方面的知识,那么下面要继续给大家讲到的就是final修饰方法方面的知识,一起来了解一下吧. final修饰的方法不能被重写,假如因为一些原因, ...

  8. 12. final修饰符

    一.final修饰符概述 1. final可以修饰类.变量和方法 2. final修饰的类.变量和方法不可改变 二.final成员变量 1. 对于final修饰的成员变量而言,一旦有了初始值,就不能被 ...

  9. JAVA: final 修饰符

    final 修饰符 final 变量: final 表示"最后的.最终的"含义,变量一旦赋值后,不能被重新赋值.被 final 修饰的实例变量必须显式指定初始值. final 修饰 ...

最新文章

  1. Transaction中的SQL死锁
  2. C++反汇编代码分析
  3. YunYang1994/tensorflow-yolov3 Readme 翻译
  4. pyinstaller打包pyqt文件(转)
  5. Spring中基于Java的配置@Configuration和@Bean用法
  6. How to create a jump server in AWS VPC
  7. Django中related_name的作用
  8. c++ printf怎么用_【经典】把脉printf中的C进阶技巧
  9. 高效pycharm使用技巧_您是否正在使用这种高效的采访技巧?
  10. 网络原理 | TCP/IP中的连接管理机制 重要协议与核心机制
  11. ConcurrentHashMapK, V的实现
  12. 图解Web服务器网关接口WSGI(Web Server Gateway Interface)
  13. (22) 基于动态时空图卷积神经网络的交通流预测
  14. 团队建设:如何打造一个优秀的团队
  15. 干货 | SQL 进阶技巧
  16. 当WebRTC Pion示例无音频流的时候,如何添加音频模块并通过浏览器播放?
  17. [译]带你揭开Kotlin中属性代理和懒加载语法糖衣
  18. 人脸表情数据集-fer2013
  19. C++ 数组作为参数传入函数 int sum_arr(int arr[], int n)
  20. 反掩码、掩码和通配符的区别

热门文章

  1. Python学习笔记之函数(四)
  2. 关于maven依赖中的scope的作用和用法
  3. 第一个 Web 程序
  4. python自增_Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?
  5. ASP.NET中密码保护,MD5和SHA1算法的使用
  6. C语言CRC32 逆向算法源码
  7. DiscuzX系列命令执行分析公开(三连弹)
  8. 按键精灵saystring无法使用的几种解决方案
  9. 开发中遇到的java小知识
  10. web学习笔记1--HTML