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 ...
随机推荐
- IP地址(参考百度百科)
题目1:用子网掩码划分网络时,如果划分8个子网,则需要4位.因为24-2>=8.(全0代表网络自身,全1代表广播地址,所以减2) 以C类地址为例,(1)8个子网,则4位子网,主机号为后4位,主机 ...
- 【知识】location.search获取中文时候会被编码成一串字符
[转码] 例如:case.html?id='这个是页面的标题' 当想要使用location.search获取?id='这个是页面的标题'的时候,包含的中文会被编码成一串字符串. 所以我们需要进行解码, ...
- 配置:Uri
URI是网络资源的定义,代表了要操作的数据,Uri主要包含了两部分信息: 1>需要操作的ContentProvider 2>对ContentProvider中的什么数据进行操作 一个 ...
- 容器————map
序列容器是管理数据的宝贵工具,但对大多数应用程序而言,序列容器不提供方便的数据访问机制.一种典型的方法是通过名称来寻找地址.如果记录保存在序列容器中,就只能通过搜索得到这些数据.相比而言,map 容器 ...
- Windows10 pro & ent 禁用自动更新
为了节约可怜的一点点流量,这个设置还是很重要的. Step 1: 通过在命令提示符中执行gpedit.msc命令,打开组策略 Step 2: 打开管理模板->windows组件->wind ...
- (51)LINUX应用编程和网络编程之六Linux高级IO
3.6.1.非阻塞IO 3.6.1.1.阻塞与非阻塞 阻塞:阻塞具有很多优势(是linux系统的默认设置),单路IO的时候使用阻塞式IO没有降低CPU的性能 补充:阻塞/非阻塞, 它们是程序在等待消息 ...
- 关于tomcat的server.xml里host节点配置的一些说明
其实对这个一直搞不清楚,后来公司的网站遭遇与IIS进行整合,然后上面有几个应用需要进行配置,所以对tomcat的server.xml进行了一些深入的了解 Host的节点主要是起一个对域名解析到那个虚拟 ...
- pymysql(一)检索、增加、更新、删除数据
(一) SELECT 检索数据 代码如下: import pymysql '''pymysql使用指南host = '127.0.0.1'回送地址,指本地机port = 3306MySQL的默认端口 ...
- 《Effective Java》读书笔记 - 11.序列化
Chapter 11 Serialization Item 74: Implement Serializable judiciously 让一个类的实例可以被序列化不仅仅是在类的声明中加上" ...
- RestFul的无状态规则详解
无状态原则 Statelessness:无状态原则是RESTful架构设计中一个非常重要的原则,无状态是相对于有状态而言的.在理解什么是无状态的交互请求之前,首先我们需要了解什么是有状态,并对两者进行 ...