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)的更多相关文章

  1. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  2. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  3. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  4. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  5. Java基础笔记1

    java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...

  6. Java基础笔记(一)——JDK、JRE、JVM

    JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...

  7. Java基础笔记05-06-07-08

    五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...

  8. Java基础笔记-抽象,继承,多态

    抽象类: abstract修饰 抽象方法必须定义在抽象类中,抽象类不能创建对象. 在抽象方法中可以不定义抽象方法,作用是:让该类不能建立对象. 特点是: 1.定义在抽象类中 2.方法和类都用abstr ...

  9. Java基础笔记(一)

    本文主要是我在看<疯狂Java讲义>时的读书笔记,阅读的比较仓促,就用 markdown 写了个概要. 第一章 Java概述 Java SE:(Java Platform, Standar ...

  10. JAVA基础笔记10-11-12-13-14

    十.今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在J ...

随机推荐

  1. Jenkins打包Maven项目

    Jenkins是一个用于持续集成的服务,简单些说,就是提交代码后,点一下(也可以设置自动检测),系统会自动下载你的代码并编译,然后复制或上传到指定位置,并给所有相关人发送邮件. 一.环境搭建 1.下载 ...

  2. VUEX报错 [vuex] Do not mutate vuex store state outside mutation handlers

    数组 错误的写法:let listData= state.playList; // 数组深拷贝,VUEX就报错 正确的写法:let listDate= state.playList.slice(); ...

  3. 【leetcode】1105. Filling Bookcase Shelves

    题目如下: We have a sequence of books: the i-th book has thickness books[i][0] and height books[i][1]. W ...

  4. Linux设置程序开机自启动

    注意: 作者测试时,Linux版本为RedHat6,同时应用在CentOS6应该也可以(作者未实测,但有同事在CentOS6上使用可行),系统版本的不同,可能造成操作上的差异(CentOS7就与Cen ...

  5. UNIX标准C - 进程之间的通信

    一.基本概念 进程间通信IPC:进程之间交换数据的过程叫进程间通信 进程间同性的方式: 简单的进程间的通信: 命令行:父进程通过exec函数创建子进程是可以附加一些数据 环境变量表:父进程通过exec ...

  6. UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(链表)

    题目代号:UVA 11988 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&pa ...

  7. CentOS查看进程端口号以及kill操作

    查看端口: 使用 netstat   -anp   |   grep  8090即:netstat –apn | grep  8090 查看进程:1.ps 命令用于查看当前正在运行的进程,grep 是 ...

  8. Python3学习笔记(七):字典

    在python中,有一种通过名字来引用值的数据结构,这种类型的数据结构成为映射. 字典是Python中唯一内建的映射类型,具有以下特点: 字典中的值是无序的 值存在特定的键(key)下 键(key)可 ...

  9. leetcode-mid-others-169. Majority Element¶

    mycode  54.93% class Solution(object): def majorityElement(self, nums): """ :type num ...

  10. hook工具

    调试工具 WinDbg com/daoyuly/p/3570037 DebugDiag procexp64.exe APIMonitor OllyDBG API伴侣 FileMon  v7.04  ( ...