oop_day06_抽象类、接口_20150814

1.static final常量:

1)必须声明同一时候初始化。不能改动,类名点来訪问

2)常量名建议全部字母都大写

3)编译器编译时会直接替换为详细的值---效率高

代码演示样例:

package oo.day06;
//static final常量
public class StaticFinalDemo {
public static void main(String[] args) {
//Aoo.NUM = 250; //编译错误。常量不能改动
//System.out.println(Aoo.NUM); //1.方法区中载入Boo.class
//2.将NUM1存储在方法区中
//3.去方法区中获取NUM1的值并输出
System.out.println(Boo.NUM1); //编译器在编译时直接被替换为详细的值。效率高
//等价于System.out.println(6);
System.out.println(Boo.NUM2);
}
}
class Boo{
public static int NUM1 = 5; //静态变量
public static final int NUM2 = 6; //常量
} class Aoo{
public static final int NUM = 5; //常量
//public static final double PI; //编译错误,必须声明同一时候初始化
}

2.抽象方法

1)由abstract修饰

2)仅仅有方法的定义。没有方法的实现(连大括号都没有)

3.抽象类:

1)由abstract修饰

2)包括抽象方法的类必须是抽象类

不包括抽象方法的类也能够声明为抽象类-----我愿意

3)抽象类不能被实例化

4)抽象类是须要被继承的,子类:

4.1)重写全部的抽象方法----建议

4.2)声明为抽象类----不建议

5)抽象类的意义:

  5.1)封装全部子类共同拥有的数据和行为。实现代码重用

      5.2)为全部子类提供了一种公共的类型(向上造型)

      5.3)包括抽象方法,为全部子类提供一个统一的入口

代码演示样例:

package oo.day06;
//求一组图形中的最大面积
public class ShapeTest {
public static void main(String[] args) {
//Shape s = new Shape(); //编译错误,抽象类不能被实例化
Shape[] shapes = new Shape[4]; //创建Shape数组对象
shapes[0] = new Circle(1); //向上造型
shapes[1] = new Circle(2);
shapes[2] = new Square(1);
shapes[3] = new Square(2);
maxArea(shapes);
}
public static void maxArea(Shape[] shapes){ //求最大面积
double max = shapes[0].area(); //最大面积
int maxIndex = 0; //最大面积索引
for(int i=1;i<shapes.length;i++){
double area = shapes[i].area();
if(area>max){
max = area;
maxIndex = i;
}
}
System.out.println("最大面积为:"+max+",所在索引为:"+maxIndex);
} } abstract class Shape{ //抽象类
protected double c; //周长
public abstract double area(); //抽象方法
}
class Circle extends Shape{
public Circle(double c){
this.c = c;
}
public double area(){ //重写抽象方法
return 0.0796*c*c;
}
}
class Square extends Shape{
public Square(double c){
this.c = c;
}
public double area(){ //重写抽象方法
return 0.0625*c*c;
}
}

4.接口:

1)是一个标准、规范-----制定方

遵守了这个标准,就能干某件事-----后期再理解

2)由interface定义

3)仅仅能包括常量和抽象方法

4)接口不能被实例化

5)接口是须要被实现(implements)的,实现类:

必须重写接口中的全部抽象方法

6)一个类能够实现多个接口。用逗号分隔

若既继承又实现时。必须先继承,后实现

7)接口之间能够继承

7.1)类和接口之间为实现(implements)

7.2)接口和接口之间为继承(extends)

7.3)类和类之间为继承(extends)

代码演示样例:

package oo.day06;
//interface演示
public class InterfaceDemo {
public static void main(String[] args) {
//Inter6 o = new Inter6(); //编译错误,接口不能被实例化
Foo o1 = new Foo();
Inter6 o2 = new Foo(); //向上造型
Inter5 o3 = new Foo(); //向上造型 }
} interface Inter5{
void a();
}
interface Inter6 extends Inter5{
void b();
}
class Foo implements Inter6{
public void b(){}
public void a(){}
} interface Inter3{
void a();
}
interface Inter4{
void b();
}
abstract class Doo{
abstract void c();
}
class Eoo extends Doo implements Inter3,Inter4{
public void a(){}
public void b(){}
void c(){}
} interface Inter2{
void a();
}
class Coo implements Inter2{
public void a(){}
} interface Inter1{
public static final int NUM=5;
public abstract void show(); double PI = 3.14159;//默认public static final
void sayHi(); //默认public abstract //public void say(){} //编译错误
//public int a; //编译错误
}

oop_day06_抽象类、接口_20150814的更多相关文章

  1. 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait

    [源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...

  2. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)

    一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...

  3. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  4. 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装

    抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...

  5. “全栈2019”Java第一百零六章:匿名内部类与抽象类接口注意事项

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  7. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

  8. C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )

    你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )   一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻.交流,对于一 ...

  9. 13. 抽象类 & 接口

    一.抽象类 // 抽象类Shape public abstract class Shape { // 1. 成员变量 private String color; // 2. 初始化块 { System ...

随机推荐

  1. 【译】x86程序员手册26-7.5任务切换

    7.5 Task Switching 任务切换 The 80386 switches execution to another task in any of four cases: 80386在以下四 ...

  2. Exceptions & Errors - 异常与错误

    来源于 Ry’s Objective-C Tutorial - RyPress 一个学习Objective-C基础知识的网站. 个人觉得很棒,所以决定抽时间把章节翻译一下. 本人的英语水平有限,有让大 ...

  3. vue基础---实例

    (1)数据和方法 ①响应式双向绑定 当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性.当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为 ...

  4. xmpp消息回执(6)

    原始地址:XMPPFrameWork IOS 开发(七)消息回执 请参考:XEP-0184协议 协议内容: 发送消息时附加回执请求 <message from='northumberland@s ...

  5. FileOutputStream将从一个文件中读取的内容写到另一个文件中

    package com.janson.day2018082 import java.io.FileInputStream; import java.io.FileNotFoundException; ...

  6. openpyxl操作excel文件

    https://blog.csdn.net/hunter_wyh/article/details/78498323

  7. 2.5.5 基本的 I/0 重定向

        标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了.这个概念就是:程序应该有数据的来源端.数据的目的端以及报告问题的地方,它们分别被称为标准输入(standard i ...

  8. HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法

    先是这周是搜索的题,网站:http://acm.hdu.edu.cn/webcontest/contest_show.php?cid=6041 主要内容是BFS,A*,IDA*,还有一道K短路的,.. ...

  9. noip模拟赛 水管工的难题

    [问题描述]你是一名优秀的水管工. 一天你遇到了一个棘手的难题. 你需要在一个长方体状的房间内连接一条贯穿房间内部的水管.房间的长为 X,宽为 Y,高为 Z, 整个房间可以看成是 X×Y×Z个小立方体 ...

  10. oracle中的类似BIN$MrkCYT9eTTK+0sStMwn7+Q==$0的表的作用

    https://www.2cto.com/database/201211/166482.html https://docs.oracle.com/cd/E11882_01/server.112/e40 ...