oop_day06_抽象类、接口_20150814
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的更多相关文章
- 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait
[源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...
- python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)
一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...
- python面向对象 : 抽象类(接口类),多态,封装(私有制封装)
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...
- 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装
抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...
- “全栈2019”Java第一百零六章:匿名内部类与抽象类接口注意事项
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 面向对象 继承 抽象类 接口 static 权限修饰符
Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...
- python day - 19 抽象类 接口类 多态 封装
一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...
- C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )
你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 ) 一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻.交流,对于一 ...
- 13. 抽象类 & 接口
一.抽象类 // 抽象类Shape public abstract class Shape { // 1. 成员变量 private String color; // 2. 初始化块 { System ...
随机推荐
- 【译】x86程序员手册26-7.5任务切换
7.5 Task Switching 任务切换 The 80386 switches execution to another task in any of four cases: 80386在以下四 ...
- Exceptions & Errors - 异常与错误
来源于 Ry’s Objective-C Tutorial - RyPress 一个学习Objective-C基础知识的网站. 个人觉得很棒,所以决定抽时间把章节翻译一下. 本人的英语水平有限,有让大 ...
- vue基础---实例
(1)数据和方法 ①响应式双向绑定 当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性.当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为 ...
- xmpp消息回执(6)
原始地址:XMPPFrameWork IOS 开发(七)消息回执 请参考:XEP-0184协议 协议内容: 发送消息时附加回执请求 <message from='northumberland@s ...
- FileOutputStream将从一个文件中读取的内容写到另一个文件中
package com.janson.day2018082 import java.io.FileInputStream; import java.io.FileNotFoundException; ...
- openpyxl操作excel文件
https://blog.csdn.net/hunter_wyh/article/details/78498323
- 2.5.5 基本的 I/0 重定向
标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了.这个概念就是:程序应该有数据的来源端.数据的目的端以及报告问题的地方,它们分别被称为标准输入(standard i ...
- HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法
先是这周是搜索的题,网站:http://acm.hdu.edu.cn/webcontest/contest_show.php?cid=6041 主要内容是BFS,A*,IDA*,还有一道K短路的,.. ...
- noip模拟赛 水管工的难题
[问题描述]你是一名优秀的水管工. 一天你遇到了一个棘手的难题. 你需要在一个长方体状的房间内连接一条贯穿房间内部的水管.房间的长为 X,宽为 Y,高为 Z, 整个房间可以看成是 X×Y×Z个小立方体 ...
- oracle中的类似BIN$MrkCYT9eTTK+0sStMwn7+Q==$0的表的作用
https://www.2cto.com/database/201211/166482.html https://docs.oracle.com/cd/E11882_01/server.112/e40 ...