RE:JAVA学习-步入抽象
来源:互联网 发布:下什么软件淘宝返钱 编辑:程序博客网 时间:2024/06/05 09:45
一.static final常量
1>必须声明同时初始化
2>通过类名点 来访问,不能改变
3>建议:常量名所有字母都大写,多个单词用_ 分隔
4>编译器在编译时将常量直接替换为具体的值,效率高
二.抽象方法
1>由abstract修饰
2>只有方法的定义,没有具体的实现(大括号{}都没有)
三.抽象类
1>由abstract修饰
2>包含抽象方法的类必须是抽象类
不包含抽象方法的类也可以声明为抽象类(不建议)
3>抽象类不能被实例化 (不能new 但是可以声明引用 A a;)
4>抽象类是需要被继承的
继承抽象类的子类:
重写所有抽象方法——必须
也可以声明抽象类—-不建议
5>抽象类的意义:
5.1>封装子所共有的属性和行为——代码复用
5.2>为所有子类提供统一的类型——向上造型
5.3>可以包含抽象方法,为所有子类提供了统一的入口
子类的具体实现是不同的,但方法的定义是一致的
public class Too extends Hoo{ //继承抽象类的子类要重写所有抽象方法 @Override public void show() { // TODO Auto-generated method stub } @Override public void test() { // TODO Auto-generated method stub }}abstract class Hoo{ public abstract void show(); public abstract void test();}
四.接口 是一种数据类型(引用类型)
1>是一个标准 规范———-制定方
遵守了这个标准,就能干某件事
2>由interface定义
只能包含常量和抽象方法
3>接口不能被实例化
4>接口是需要被实现的(implements),实现类
必须重写接口中的所有抽象方法
5>一个类可以实现多个接口,用逗号隔开
若又继承又实现时,应先继承后实现
6>接口可以继承接口
public class InterfaceDemo { public static void main(String[] args) {// Inter4 o1=new Inter4(); Inter4 o2=new Eoo(); Inter3 o3=new Eoo(); }}interface Inter1{ public static final double PI=3.1415926; abstract void show();}interface Inter2{ void a(); void b();}class Aoo implements Inter2{ public void a(){} public void b(){}}interface Inter3{ void c();}class Boo implements Inter3,Inter2{ public void a(){} public void b(){} public void c(){}}abstract interface Foo extends Inter3{}abstract class Coo{ abstract void d();}class Doo extends Coo implements Inter2,Inter3{ void d(){} public void a(){} public void b(){} public void c(){}}interface Inter4 extends Inter3{ abstract void e();}class Eoo implements Inter4{ public void e(){} public void c(){}}
抽象类和接口的应用:
public interface UnionPay { public double getBalance();//查询余额 public boolean drawMoney(double number);//取钱 public boolean checkPwd(String input);//验证密码}public interface ICBC extends UnionPay { public void payOnline(double number);}public class ICBCImpl implements ICBC { private double money; private String pwd; /** * @param money * @param pwd */ public ICBCImpl(double money, String pwd) { super(); this.money = money; this.pwd = pwd; } @Override public double getBalance() { // TODO Auto-generated method stub return money; } @Override public boolean drawMoney(double number) { // TODO Auto-generated method stub if(money>=number){ money-=number; return true; } return false; } @Override public boolean checkPwd(String input) { // TODO Auto-generated method stub if(input.equals(pwd)){ return true; } return false; } @Override public void payOnline(double number) { // TODO Auto-generated method stub if(money>=number){ money-=number; } }}public class UnionPayTest { public static void main(String[] args) { UnionPay icbc=new ICBCImpl(2000,"123456"); Scanner input=new Scanner(System.in); System.out.println("请输入密码:"); if(icbc.checkPwd(input.next())){ System.out.println("请输入金额:(余额"+icbc.getBalance()+")");// double num=Double.parseDouble(input.next()); double num=input.nextDouble(); if(icbc.drawMoney(num)){ System.out.println("取钱成功,余额"+icbc.getBalance()); }else{ System.out.println("余额不足"); } }else{ System.out.println("密码错误"); } }}
- RE:JAVA学习-步入抽象
- RE:JAVA学习-步入String
- RE:JAVA学习-日期操作+步入集合
- 步入Java。。。
- 步入java
- RE:JAVA学习-方法调用
- RE:JAVA学习-集合操作
- RE:JAVA学习-HashMap用法
- RE:JAVA学习-了解线程
- RE:0 JAVA学习----(一) 对象
- RE:JAVA学习-变量,基本数据类型,Scanner
- RE:JAVA学习-初入循环
- RE:JAVA学习-循环应用和数组
- RE:JAVA学习-初访 对象与类
- RE:JAVA学习-深入继承+访问控制
- RE:JAVA学习-文件操作-File
- JAVA学习.抽象类
- Java学习-抽象
- 2017百度之星初赛(A) 1006 度度熊的01世界(搜索连通块)
- CentOS7.3利用kubeadm安装kubernetes1.7.3完整版(官方文档填坑篇)
- SSM整合redis
- 用五种方法来聊一聊传说中的三栏布局
- 2017年前端开发工具趋势
- RE:JAVA学习-步入抽象
- 移除JSON对象中的某个属性
- css超简单实现div页面居中【适合做弹出框】
- MySQL添加用户、删除用户与授权
- MySQL debug设置
- selenium+java破解极验滑动验证码
- constructor和prototype的总结
- 计蒜客 羊圈(凸包+多边形面积计算模板)
- 理解 Unity 的 Transform