第二章

文章目录

  • 第二章
    • 2.1.1类与对象的概念
    • 2.21类与对象的关系
    • 2.2类的定义
    • 2.2.1类声明部分
    • 2.2.3成员变量
    • 2.2.4方法
    • 2.2.5构造方法
    • 2.2.6方法重载
    • 2.3.1对象的创建
    • 2.4.1合成与继承
    • 2.4.2
    • 2.6.1抽象类
    • 2.6.2接口
    • 2.7.1抽象类与多态
    • 2.7.2接口与多态
    • 2.8泛型
    • 2.9枚举
  • 第三章
    • lambda介绍

2.1.1类与对象的概念

有共同特点的软件对象可以抽象成为一类,类中定义各对象共有的变量和方法,成为原型。由原型可以定义一个个具体的对象,成为实例。

由类产生实例的过程充分体现了类的可复用性

2.21类与对象的关系

对象是类的实例,类是公有特性的对象的抽象。

2.2类的定义

class Bike{public boolean ispublish=ture;
piblic float Charge(float h){return 1*h;
}
}

2.2.1类声明部分

modifiers部分 修饰符部分,可设置为abstract,final,public
1.abstract 抽象类,不能直接实例化为对象,只能被子类继承抽象方法由子类重写
2.final 最终类,不能有子类,不能被继承,不能被重写,确保唯一性
3.public 公用类,可以被所属包之外的其他类与对象调用
4.省略“友好的” 只能在当前包使用

2.2.3成员变量

类变量:在类中只出现一次,只分配一次内存,可被公用
实例变量:每创建一次实例,都为实例变量分配一次内存,不可被公用

accessSpecifier访问限制符
限制类 同类 同包 子类 不同包
public 公共变量 Y Y Y Y
protected保护变量 Y Y Y N
省略(friendly) Y Y N N
private私有变量 Y N N N

static关键字:表明这个变量是类变量而不是实例变量,可以被共用
final关键字:表明这个变量是一个常数

2.2.4方法

class Myclass{int op1,op2;
int myMethod(int op3,int op4){//方法声明
int op5;//方法内部局部变量
op5=op3*op4;
return op5;
}
}

2.2.5构造方法

格式

  • 类的第一个字母大写
  • 对象全部为小写
构造方法是在new一个对象时被自动调用的

构造方法有专门的用途,用于建立本类的一个新对象,并且对新对象进行 初始化

class Rect{protected float widrh,height;//保护权限的成员变量
public float area;//公有权限的成员变量
public Rect(float w, float h){//构造方法对成员变量进行初始化
width =w;
height =h;
area=getArea(w,h);
}
public float getArea (float w, float h){//求面积由构造方法调用
float a;
a=w*h;
return a;
}
}class MyRect{public static void main(String[] args) {Rect rect =new Rect(4.0f,6.0f)
//建立类Rect 的实例rect,用4.0,6.0初始化w,h
}
}

2.2.6方法重载

用同一个方名表示一个类中不同行为的几个方法,但是参数不能一致

class point{point(int x,int y){//构造方法
.......
}
double distance(int x,int y){.......
}
double diatance(point p){//方法重载
..........
}
}

2.3.1对象的创建

Myclass objectA=new Myclass();

2.4.1合成与继承

2.4.2

继承:JAVA的继承是单继承性,只允许继承一个超类

  • 若子类方法重写了其超类的某个方法,可以用super来调用这个被重写方法

方法的重写:在类的继承过程中,子类经常会重写超类的方法,因为他想改进功能

class Myclass{//定义超类boolean op1;int text;void Myethod(){op1=true;text=10;}
}
class Mysub extends Myclass{//子类boolean op1;//定义与超类同名的成员变量int text;void Mymethod(){op1=false;text=100;super.Myethod();//调用超类的成员方法System.out.println(text+""+op1);System.out.println(super.text+""+super.op1);//输出超类op1;}}
public class Mysubshow {public static void main(String[] args) {Mysub sub=new Mysub();sub.Mymethod();}
}

2.6.1抽象类

含抽象方法的类一定要声明为抽象类,因为这种类不能实例化,只能继承 ,目的是让子类对它进行改进

2.6.2接口

//接口声明
interface Deckaration{interface Body
}

(1)public访问限制表明改接口可以被任何宝的各类使用
(2)extends可以包含多个接口名,用 ,隔开,继承接口的常量和方法

public interface Myable extends My1,My2{..........
}

3.实现接口
接口由类来实现,在类声明中若有implements关键字,其后会有若干个在该类中实现的接口名

2.7.1抽象类与多态

书本P61

2.7.2接口与多态

interface Bike{//2.7.2接口与多态public  final  boolean ispublic=true;public  float charge(float h);public String getBikeName();}
class Mobike implements Bike{public float charge(float h){return 2*h;}public String getBikeName(){return  "摩拜单车";
}
}class Ofo implements Bike{public  float charge(float h){return 1*h;}public String getBikeName(){return "小黄车";}}public class UseBike {public static void main(String[] args) {Bike[] b=new Bike[2];b[0] =new Mobike();b[1] =new Ofo();for(  Bike bik:b){System.out.println(bik.getBikeName());System.out.println(bik.charge(4));}}}

2.8泛型

用某个未指定的类型T取代整形类型,实际使用时再代入具体类型,那么就可以处理多种类型的对象

interface Room<T>{void find(T t);
}class RoomImp1<T> implements Room<T>{//未指定具体的泛型类型public void find(T t){System.out.println("你预定的是"+t);}
}
class RoomImp2 implements Room<Integer>{//指定具体的泛型类型public void find(Integer t){System.out.println("您的房间号是"+t);}
}
public class TestRoomImp1 {public static void main(String[] args) {RoomImp1<String> r=new RoomImp1<>();//创建对象时指定具体的类型r.find("宝格丽酒店");RoomImp2 r2=new RoomImp2();r2.find(603);}
}

2.9枚举

枚举类型是一个类型的域中包含一组设定好的常数

enum Season{SPRING,SUMMER,AUTUMN,WINTER
}public class Myenum {public static void main(String[] args) {Season s1=Season.WINTER;System.out.println(s1);Season s2=Season.SPRING;System.out.println(s2);}}

第三章

lambda介绍

lambda使JAVA能像C#和C++一样进行简单“函数式编程”
习题三
1.什么是lambda表达式
lambda表达式是基于数学中λ演算得名,本质上就是一个没有方法体的匿名方法
2.什么是函数式接口
函数式接口是只包含有一个抽象方法的接口,又被称为单例抽象类接口

该接口中只包含有一个抽象方法run(),所以是一个典型的函数式接口
public interface Runnable{void run();
}

3.举例说明lambda表达式和函数接口是如何关联的
对照参考书本P74-75【例3.1】和【例3.2】

interface myInter{//函数式接口double computer(double x,double y);//唯一抽象方法
}
interface  Inter<T>{//泛型函数式接口T computer(T x,T y);
}
}
public class _lambda {public static void main(String[] args) {myInter add=(m,n)->m+n;//lambda表达式赋值为改接口的一个引用System.out.println(add.computer(90,20));Inter<Integer>  add1=(n,m)->n+m;//指定lambda表达式中参数为int类型System.out.println(add1.computer(20,90));}}

4.什么是方法引用
在某些情况下lambda表达式里面可能仅仅只有一个方法调用,在这种情况下,可以不用lambda表达式,而直接通过方法名称来引用方法
5.举例说明方法引用和表达式有何关联

interface  _myInter{//构造方法的方法引用myTest test(int op1,int op2);
}
class myTest{private int n,m;myTest(int op1,int op2){m=op1;n=op2;}int getM(){return  m;}int gerN(){return  n;}
}class methodReferTest4 {public static void main(String[] args) {_myInter m1=myTest::new;myTest mt1=m1.test(20,6);System.out.println(mt1.gerN()+"\n"+mt1.getM());}
}

静态方法的方法引用

interface myInter{//创建接口void test(int x,int y);
}
class myCompare{static void compare(int m,int n){if(m<n) System.out.println(m+"<"+n);if(m>n) System.out.println(m+">"+n);if(m==n) System.out.println(m+"="+n);}
}public class mythodReferTest1 {static   void compTest(myInter p,int op1,int op2){//设置一个方法给静态方法引用myInter p接受myCompare::compare,//通过p.text给引用的compare方法传数据p.test(op1,op2);}public static void main(String[] args) {compTest(myCompare::compare,6,6);}}

JAVA技术及应用(第二版)(赵锐,李卫华)学习总结相关推荐

  1. 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器

    垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM . Serial 收 ...

  2. 医疗机构内新型冠状病毒感染预防与控制技术指南(第二版)

    为进一步做好医疗机构内新型冠状病毒感染(以下简称新冠感染)的预防与控制工作,最大限度降低感染发生,现修订形成<医疗机构内新型冠状病毒感染预防与控制技术指南(第二版)>.本技术指南适用于各级 ...

  3. 报格志测试培训课程,送《软件测试技术大全》第二版!

    报格志测试培训课程,送<软件测试技术大全>第二版! http://www.automationqa.com/training-info/alltraininginfo/item/238-g ...

  4. 最新java毕业设计论文参考文献第二版

    最新java毕业设计论文参考文献1 [1]王颖.云计算编程模型中Java应用研究[J].福建质量管理,2016,03:186. [2]陈衍席.基于Java网络聊天系统的设计及实现研究[J].通讯世界, ...

  5. 日志文件列表 读书笔记《Linux 系统管理技术手册(第二版)》

    日志文件列表 文件 程序 出处 频率 发行版本 内容 auth.log su等 S M DU 授权 apache2/* httpd第二版 F D SDU Apache HTTP服务器的日志(第二版) ...

  6. slam十四讲第二版 pdf_聊聊这两年学习slam啃过的书

    作者:Amber 来源:微信公众号|3D视觉工坊(系投稿) 「3D视觉工坊」技术交流群已经成立,目前大约有8000人,方向主要涉及3D视觉.CV&深度学习.SLAM.三维重建.点云后处理.自动 ...

  7. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第01章 语言处理与Python

    第01章 语言处理与Python 1.1 语言计算:文本和单词 Python入门 NLTK 入门 搜索文本 计数词汇 1.2 近观Python:将文本当做词链表 链表(list,也叫列表) 索引列表 ...

  8. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第05章 分类和标注词汇

    第05章 分类和标注词汇 5.1 使用词性标注器 5.2 标注语料库 表示已标注的标识 读取已标注的语料库 简化的词性标记集 名词 动词 形容词和副词 未简化的标记 探索已标注的语料库 5.3 使用P ...

  9. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第11章 语言数据管理

    第11章 语言数据管理 11.1 语料库结构:一个案例研究 主要设计特点 基本数据类型 11.2 语料库生命周期 语料库创建的三种方案 质量控制 维护与演变 11.3 数据采集 从网上获取数据 从字处 ...

  10. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第04章 编写结构化程序

    第04章 编写结构化程序 4.1 回到基础 赋值 等式 条件语句 4.2 序列 序列类型上的操作 合并不同类型的序列 产生器表达式 4.3 风格的问题 过程风格与声明风格 计数器的一些合理用途 4.4 ...

最新文章

  1. 排列若干个字符串,判断是否首尾可以连接在一起
  2. UIKit 框架之UIActionSheet
  3. 不动产中心考试计算机测试题,2005年全国计算机二级考试VFP笔试模拟题
  4. 一文读懂架构整洁之道(附知识脉络图)
  5. silk 编解码_Silk编解码在android实现
  6. 一用户使用LTC以168万美元的价格购入收藏界“圣杯“卡片
  7. Leetcode每日一题:56. I. 数组中数字出现的次数
  8. Symbian 5800 重力开发的一些数据
  9. 万年历c语言 输出单月,求帮忙差错,打印万年历,输入某年某月,打印该月日历...
  10. Android刷机Windows10,蓝魔i9s Win10+Android双系统的刷机教程及固件下载
  11. msicuu2微软卸载工具
  12. Mybatis Plus 3 oracle 自增序列
  13. Klari汽车静态电流(暗电流)测试数据采集系统专用电流探头
  14. vim 退格键(backspace)不能用
  15. 随机邻域嵌入_诠释数据降维算法:一文讲尽t-分布邻域嵌入算法(t-SNE)如何有效利用-阿里云开发者社区...
  16. VMware虚拟网络编辑器用法
  17. 改造Android手机为,便携式linux服务器,跑tomcat
  18. 【转载】研究生退学记——谨以此记录我半途而废的研究生生涯
  19. 如何将网络上的共享文件映射到本地
  20. 精品:企业级智能 PDF 和文档处理 SDK:GdPicture.NET

热门文章

  1. Cisco(62)——PBR策略路由案例
  2. 吃!吃!吃!(python)
  3. 百度云盘 破解上传限制4G(利用种子)
  4. WebGL入门(六)-通过坐标计算实现图形的平移、旋转和缩放变换
  5. 把USB打印机映射到LPT端口
  6. 下载追踪:如何监测APP的来源渠道数据
  7. 华为交换机MPU、LPU硬件信息解释
  8. CAD中用lisp程序实现批量偏移_求一个cad lisp 双向偏移的代码
  9. git的使用(github篇)
  10. 关于马化腾的故事(转自知乎)