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 ...
随机推荐
- js中取整数的方法
1.取整的方法 Math.floor( ) Math 对象的方法--取比当前数值小的最大整数(下取整). Math.ceil( ) Math对象的方法--取比当前数值大的最小整数(上取整). Math ...
- HTML form without CSRF protection,HTML表单没有CSRF保护
HTML form without CSRF protection =HTML表单没有CSRF保护 CSRF是伪造客户端请求的一种攻击,CSRF的英文全称是Cross Site Request For ...
- jq封装插件
$.extend()拓展方法: $(function(){ $.extend({ money:function(){ alert("我要努力赚钱") }, money:functi ...
- Windows提高_2.1第一部分:线程
第一部分:线程 什么是线程? 线程其实可以理解为一段正在执行中的代码,它最少由一个线程内核对象和一个栈组成. 线程之间是没有从属关系的,同一进程下的所有线程都可以访问进程内的所有内容. 主线程其实是创 ...
- onsize
对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看.下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整. 首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数 ...
- 第一节:EasyUI样式,行内编辑,基础知识
一丶常用属性 $('#j_dg_left').datagrid({ url: '/Stu_Areas/Stu/GradeList', fit: true, // 自动适应父容器大小 singleSel ...
- Linux kernel 内存 - 页表映射(SHIFT,SIZE,MASK)和转换(32位,64位)
0. Intro 如下是在32位下的情况,32位下,只有三级页表:PGD,PMD,PTE 在64位情况下,会有四级页表:PGD,PUD,PMD,PTE 但是原理基本上是一样的,本文主要是想记录一下页表 ...
- Linux命令rsync使用总结
详细用法见:https://www.cnblogs.com/oboth-zl/articles/10334754.html rsync命令简介 主要用于数据同步.备份和镜像,除了本地使用之外,也可以通 ...
- 创建sum求多元素的和
a = [1, 2, 3] b = [4, 5, 6] def sum_super(* args): s = 0 for i in args: s += sum(i) return s # print ...
- Linux 复习四
第四章 shell程序设计I-入门 一.shell脚本的基本概念 shell脚本(script)是一个可执行的纯文本文件,有多个shell命令组成. 命令的执行时从上而下.从左而右的分析和执行 命令. ...