java基础笔记(2)
java中成员变量是有默认初始值的,而局部变量是没有的;
构造方法名和类名相同,没有返回值,即结构如下:public 构造方法名();
实例化类的本质就是调用了类的构造方法;
如果自定义了构造方法,就不会调用默认的构造方法了,即便你自己自定义的方法是有参数,而实例化时没带参数,它也不会去调用默认的无参构造方法,而是提示错误;同样的,构造方法也可以重载,实例化时根据赋予的参数对应选择;
每个类都可以实例化多个对象,每个对象都有自己的成员,相互独立,而static修饰的成员为静态成员或类成员,即它属于整个类所有,而不是特定的某个对象;访问时可以使用对象和类名进行访问,鉴于它的作用更加推荐是使用类名;
同样的,static也可以用来修饰方法,且被static修饰的方法可以之间调用同类中的static属性或方法,而要调用非static属性或方法时,需要通过对象名来实现;
而普通方法是可以直接调用同类的属性;
在类的声明中,可以存在多个初始化块,如果有static修饰则表示为静态初始化块,和普通的区别就是普通的初始化块在实例化成对象时都会进行一次初始化,而静态初始化块只会进行一次初始化,且在第一次执行顺序上是先执行静态初始化块然后再初始化块最后才是构造函数;
访问控制符:
private:同类
没声明:同类、同包
protected:同类、同包、子包
public:全部
内部类:内部类可以使用外部类的方法和变量,即使该变量的访问控制符是private,而外部类不能直接使用内部类的方法和变量,而要通过实例化对象;
内部类的实例化对象也不能直接去new一个内部类对象,而应该想外部类类型 变量名 = new 外部类名()后,再通过 内部类类型 变量名2 = 变量名.new 内部类名()实现;
如内外部类有相同的变量名,内部类默认调用的是自身的变量,如要调用外部类的同名变量,需使用外部名.this.变量名来实现调用;
静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问 ;
如内外部类有相同的变量名,内部类默认调用的是自身的变量,如要调用外部类的同名变量,需使用外部名.变量名来实现调用;
静态内部类的实例化可直接通过:内部类 对象名= new 内部类()来实现;
方法内部类:定义在方法里的内部类,不能在方法以外的地方使用,因此是不需要访问控制符合static修饰符的;
可以在方法内实例化对象,通过正常的内部类 对象名= new 内部类()来实现;
继承的初始化顺序:先初始化父类对象,后再初始化子类对象,而在对象内,是先初始化属性,后再初始化构造方法里面的属性;
final关键字:类不能被继承,方法不能被覆盖、重写,属性的值不能被修改,且声明时没被赋值时会报错,即等同于常量;
子类的构造方法会隐式地存在super()这个方法,即在实现子类的构造方法时会先实现父类的构造方法;
如果子类没有显式的父类构造方法,而父类又没有无参的构造方法,则编译会错;
子类可以通过super.xxx来调用父类的属性或方法 ;
Object类:所有类的父类,没有标明继承哪个类的类,其父类默认就是object类;
object类里面的toString()方法:当我们直接输出某个对象时,会自动调用改方法,返回的是对象在内存的地址,如需求是要返回对象的属性及方法,则需要重写toString()方法;
equals()方法:比较对象的引用是否相同,即判断是否指向同一块内存地址;在实例化对象时,其实就是把对象存在的内存地址赋给了某个变量名,通过变量名找到该对象地址,进而操控对象;即实例化两个对象通过equals来比较,其结果是不相等的,因为其内存地址是不一样的;可以通过重写equals来使得其比较的是两个对象的属性、属性值是否相等;
与==符号的区别是,==可以表示判断基本数据类型是否相等,而对于引用对象类型同样也是判断内存地址,而equals是不可以用来判断基本数据类型的,在没重写时比较的也是其内存地址是否一样;
引用多态:父类的引用可以指向本类以及子类的对象
方法多态:当父类引用子类时,如果子类有重写父类的方法,那么是可以调用到子类的方法的,当然,如果是父类本身就没有的方法,那么就没法调用子类独有的方法了;
向上向下类型转换,向上没问题,向下需强制,且需判断是否类型属于包含关系,可通过instanceof进行判断;看下面例子帮助理解:
Dog和Cat是Animal的子类;

抽象类:abstract定义抽象类;用来约束子类,父类只需表明方法即可,无需实现,即可以没有方法体,抽象方法没有方法体时以分号做结尾;子类是需要重写实现父类定义的方法;
如果有的方法有abstract修饰符,那么该方法所在的类是一定也要有abstract修饰符的;
注意类添加abstract修饰符的 顺序为 abstract class;
接口:定义了某一批类所要遵循的规范,规定这类类必需提供的方法;因此接口的属性是常量,即默认添加public static final修饰符,方法默认添加public abstract修饰符


接口的引用:可以通过指向实现接口的对象引用接口,也可以直接new 接口名(){方法}.方法来引用接口(匿名内部类),如:
SmartPhone类实现了IPlayGame接口,并定义了palyGame()方法:

匿名内部类:

通过页面和程序进行交互:

java基础笔记(2)的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java基础笔记1
java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...
- Java基础笔记(一)——JDK、JRE、JVM
JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...
- Java基础笔记05-06-07-08
五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...
- Java基础笔记-抽象,继承,多态
抽象类: abstract修饰 抽象方法必须定义在抽象类中,抽象类不能创建对象. 在抽象方法中可以不定义抽象方法,作用是:让该类不能建立对象. 特点是: 1.定义在抽象类中 2.方法和类都用abstr ...
- Java基础笔记(一)
本文主要是我在看<疯狂Java讲义>时的读书笔记,阅读的比较仓促,就用 markdown 写了个概要. 第一章 Java概述 Java SE:(Java Platform, Standar ...
- JAVA基础笔记10-11-12-13-14
十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...
随机推荐
- mysql8.0.17复制搭建及其gtid的1062和1032异常
mysql8.0.17复制搭建及其gtid的1062和1032异常 参考资料: https://blog.csdn.net/wzy0623/article/details/91982743https: ...
- Python 3标准库课件第一章
第一章文本1.1 string:文本常量和模板1.2 textwrap:格式化文本段落1.3 re:正则表达式1.4 difflib:比较序列str类,string.Templatetextwrap ...
- electron 点击事件无效
用CSS的 -webkit-app-region: drag;设置窗口可以移动后,点击事件无效 解决办法暂时不知道, 给点击的按钮加 -webkit-app-region: no-drag; 就可以点 ...
- 【shell】sed指定追加模式空间的次数
最近遇到一个文本复制的场景,需要把文本的每一行都重复输出三次. 这个用awk或者sed实现都还是很简单的. sed代码: [root]$ seq | sed '{h;G;G}' 现在的问题是,如果每行 ...
- canal 环境搭建 kafka Zookeeper安装(二)
第一步 创建Zookeeper 下载完成后 修改 Zookeeper中的 zoo.cfg 修改 dataDir .dataLogDir 集群模式 server.1=ServerIP:2888:3888 ...
- C/C++运算符优先级关系
C/C++优先级 从高到低 1~14梯队 1. () [] . -> 2. ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) ...
- docker-compose安装xxl-job
docker能安装的docker-compose肯定就能安装,锻炼一下写yml的能力. 后面再具体写实际中的应用 [root@localhost mysql]# cat docker-compose. ...
- FJOI2017 day2游记
day0 早上复习了一下凸包,lct的板子,发现现在的我好菜鸡啊,做题基本上还得看题解,自己不是很能分析出来. 下午去看考场,在附中机房又写了一遍lct,然后a掉了文理分科完就回去了. 回家的路上走在 ...
- 【bzoj2763】[JLOI2011]飞行路线
*题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ...
- H5 网站支付宝支付(前端部分)包含微信浏览器中的处理方法。
手机网站唤起支付宝支付: H5 网站实现支付宝支付是一个很常见的需求: 实现方式主要是在后台配置和预支付, 前端需要做的就是唤起 支付宝App 然后就可以输入密码支付. 这个其实难度很低, 主要就是在 ...