Java学习笔记——继承、接口、多态
浮点数的运算需要注意的问题:
BigDecimal operand1 = new BigDecimal("1.0");
BigDecimal operand2 = new BigDecimal("0.8");
BigDecimal subtract = operand1.subtract(operand2);
BigDecimal divide = operand1.divide(operand2);
System.out.println(subtract);//结果为0.2
System.out.println(1 - 0.8);//结果为0.19999999999999996
一、对象封装
对象的比较
BigDecimal d = new BigDecimal("0.1");
BigDecimal e = new BigDecimal("0.1");
BigDecimal f = e;
System.out.println(d == e);//不是同一对象,所以为false
System.out.println(d.equals(e));//equals比较对象的值是否相同
System.out.println(e == f);//绑定为同一对象
System.out.println(d != e);//结果为true,因为的确没有参考同一对象值
对象实例的复制
Clothes[] c1 = {new Clothes("blue", 'S'), new Clothes("red", 'L')};
Clothes[] c2 = new Clothes[c1.length];
for (int i = 0; i < c2.length; i++) {
c2[i] = c1[i];
}
c1[0].color = "yellow";
System.out.println(c2[0].color);//浅层复制,只是复制参考,没有将对象复制过去,System.arraycopy和Arrays.copyOf()也不可以,只能自行复制,内部元素单独复制
字符串的编译
String t1 = "Ja" + "va";//都是常量,编译时直接看为"Java"
String t2 = "Java";
System.out.println(t1 == t2);//结果为true
数组的复制
int[] arr1 = {1,2,3};
int[] arr2 = arr1;//指向同一数组,要想复制需另建新数组
arr2[1] = 20;
System.out.println(arr1[1]);
static方法或区块中不可以出现this关键字,也不可引用非静态的成员变量,非静态的方法和区块,可以使用static数据成员或方法成员
public static int sum(int a, int... num){//不定长自变量,必须放在最后面,只能用一个,对象也适用
int sum = 0;
for (int i : num) {
sum += i;
}
return sum;
}
Java中只有传值调用
class Customer{
String name;
public Customer(String name) {
this.name = name;
}
}
Customer c1 = new Customer("张三");
some(c1);
System.out.println(c1.name);//显示李四
Customer c2 = new Customer("赵六");
other(c2);
System.out.println(c2.name);//显示赵六
static void some(Customer c){
c.name = "李四";
}
static void other(Customer c){
c = new Customer("王五");//建立新对象指定给c参考,原本参考的对象会被清除
}
二、继承与多态
关于继承的几点总结
1、一方面可以避免重复定义的行为,同时也不能为了避免重复就是用继承,否则会引起程序维护上的问题。
2、继承需要结合多态灵活使用才能发挥出灵活的作用。
3、继承同样也可以让子类重新定义父类的方法,或者在父类中定义抽象方法从而将父类定义成抽象类(只能被继承而不能被实例化)。
4、继承的同时也可以重新定义细节,使用super调用父类方法的内容。重新定义时对于父类方法的权限,只能扩大不能缩小。子类通过指定super中的参数来决定调用父类的某一个构造函数。
多态:即使用单一接口操作多种类型的对象。单一接口可以是多种类型的父类,他们都属于父类这种类型,所以可以避免为每个类型重复定义方法,从而可以提高代码的维护性。
三、接口与多态
关于接口的几点总结
1、接口用于定义行为,使用interface关键字定义,接口中的方法不能直接操作,表示为public abstract,类操作接口使用implements关键字,操作接口时可以操作接口中的方法或是直接标示为abstract。
2、继承会有是一种的关系,接口操作表示拥有行为,,判断是方式为右边是不是拥有左边的行为。
3、类可以操作两个以上的接口,拥有两个以上的行为,类可以同时继承某个类,并操作某些接口。接口可以继承自另一接口,可以继承两个以上接口,继承父接口的行为,再在子接口中额外定义行为。
4、接口可以枚举常数,只能定义为public static final,可以省略。
Java学习笔记——继承、接口、多态的更多相关文章
- Java学习笔记--继承和多态(中)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java学习笔记 抽象类 接口 多态
instanceof 对象名 instanceof 类名 该对象是否属于该类 Animal animal = new Dog(); if(animal instanceof Dog){ Dog d = ...
- Java学习笔记--继承和多态(下)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java学习笔记--继承和多态(上)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java学习笔记 07 接口、继承与多态
一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...
- Java 学习笔记(7)——接口与多态
上一篇说了Java面向对象中的继承关系,在继承中说到:调用对象中的成员变量时,根据引用类型来决定调用谁,而调用成员方法时由于多态的存在,具体调用谁的方法需要根据new出来的对象决定,这篇主要描述的是J ...
- Java学习笔记---继承和super的用法
自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...
- Java学习笔记之接口和抽象类
接口(interface)1.interface创建一个接口,implements实现接口 interface jiekou{} class lie implements jiekou{}2.接口可以 ...
- java学习笔记_接口
接口:interface(关键字) public interface USB {} 1. 接口中都是抽象方法,方法前面的可见度(public.private)和抽象关键字(abstract)可以不写. ...
随机推荐
- DAY3-Python学习笔记
1.元类:动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的,不是定义死了,而是可以随时随地添加的 type():查看一个类型或变量的类型又可以创建出新的类型 c ...
- PGM学习之七 MRF,马尔科夫随机场
之前自己做实验也用过MRF(Markov Random Filed,马尔科夫随机场),基本原理理解,但是很多细节的地方都不求甚解.恰好趁学习PGM的时间,整理一下在机器视觉与图像分析领域的MRF的相关 ...
- Matplotlib风羽自定义
[前言]对于气象专业的小学生来说,风场是预报重要的参考数据,我们所知的风羽有四种:短线代表风速2m/s,长线代表风速4m/s,空心三角代表风速20m/s,实心三角代表风速50m/s.而matplotl ...
- 【刷题】BZOJ 2157 旅游
Description Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间 ...
- 【LaTex】随便学学,
教程 http://blog.csdn.net/u014803202/article/details/50410748 一个数学公式编辑器 http://latex.91maths.com/
- 洛谷P4233 射命丸文的笔记 【多项式求逆】
题目链接 洛谷P4233 题解 我们只需求出总的哈密顿回路个数和总的强联通竞赛图个数 对于每条哈密顿回路,我们统计其贡献 一条哈密顿回路就是一个圆排列,有\(\frac{n!}{n}\)种,剩余边随便 ...
- java之初学线程
线程 学习线程相关的笔记,前面写过关于很多线程的使用,有兴趣的可以去了解下 线程 概念理解 并发 : 指两个或多个事件在同一个时间段内发生(交替执行). 并行 : 指两个或多个事件在同一时刻发生(同时 ...
- BZOJ 2140 稳定婚姻
2140: 稳定婚姻 Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的 ...
- FPGA/SOPC学习转载
转自小時不識月http://www.cnblogs.com/yuphone/archive/2010/08/27/docs_plan.html 新网址为:http://andrewz.cn [连载计划 ...
- state.sls与state.highstate区别
最近编写kubernetes的saltstack状态配置文件,在github上找到一个开源的salt文件,根据自己的需要,完成修改之后.执行部署测试 大致目录结构如下: |----k8s | |___ ...