今日份鼓励:每日循环的学习,是在积累,你逃脱贫困资本!!
小知识:
1.this.成员变量名的意义可以与 对象.对象名 近似
2. 方法区存储类的信息
3.this()只能放在构造方法中
4.ieda的使用技巧,我会专门写一下IDEA的使用,并且不断的完善
5.类的权限修饰符只能时public或者默认修饰符,但是在内部类中不太一样
7.创建内部类时必须先创建外部类对象,除非使用static修饰
目录
目录
上期回顾:
什么是面向对象? 在一个任务上,对象间相互交互完成。 抽象对象 创建对象 使用对象
什么是类? 类就像是一个模板,一个类可以有多个对象
class classname{
成员变量;
成员方法;
}
什么是对象? 通过类实例化一个对象,通new关键字来创建对象。
构造方法的调用 在new创建对象时调用(参数可以不带),构造方法可以重载,当我们没有设置构造方法,编译器会自己生成一个无参数的构造方法
toString的使用 我们没有设置时,打印的是类型与哈希值,我们自定义后可以打印对象
例:,
①没有重写toString
②重写toString
一、了解封装
面向对象的三大特点:封装、继承、多态。
访问修饰限定符:
public: 该项目内都能使用
private: 只能在当前类中使用
protected: 在同一包中使用
不使用修饰,默认: 在同一包中,及它的子类可以使用
package com.bit.demo1;
public class TestDemo {
int a = 10; //只能在同一包中使用
public int b = 20; //该项目内都能使用
private int c = 30; // 只能在当前类中使用
protected int d = 40; //在同一包中使用,及其不同包中的子类
public static void main(String[] args) {
TestDemo testDemo = new TestDemo();
System.out.println(testDemo.a);
System.out.println(testDemo.b);
System.out.println(testDemo.c);
System.out.println(testDemo.d);
}
}
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
1.包的定义:
为了更好的管理类,把多个类收集在一起成为一组,称为软件包,包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。
2.导入包使用import
①使用 import语句导入JAVA设计好的包
②用import static导入包中静态的方法和字段。
注意 :不推荐使用!!!
③引入自己定义的包
1.名称一般是公司名称域名的倒写:例com.baibu.www
2.不同的class在不同的包中可以同名
3.package 是声明包的路径
3.Java常用的包
java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
java.lang.reflect:java 反射编程包; 3. java.net:进行网络编程开发包。
java.sql:进行数据库开发的支持包。
java.util:是java提供的工具程序包。(集合类等) 非常重要
java.io:I/O编程开发包。
二、static的使用
static修饰的成员方法:静态成员方法/类方法
static修饰的成员变量:静态成员变量/类变量
static修饰后的变量可以直接用类名访问,也可以使用对象使用,推荐使用第一个,不用创建对象
即使没有对象,也可以直接使用,本质上它是属于类变量
使用static修饰的变量与方法:
1.在普通方法当中可以使用静态变量
2.在静态方法当中不可以使用普通变量,因为普通变量依赖对象的
1.修饰变量
2.修饰方法
static静态成员的特征:
1.不需要每个具体的对象,可以直接用类名.成员名使用
2.即可以通过对象调用也可以通过类名调用
3.类变量存储在方法区当中
4.静态成员的生命周期伴随类的一生
5.方法区与堆是同等级的对象,但是方法区的实现在堆中
三、代码块的认识
1.实例代码块——用于初始化实例成员变量
①优先于构造方法使用,在字节码
2.静态代码块——用于初始化静态成员变量
①在实例代码块前执行,但每个类的创建后实例化只执行一次
②多个静态代码块会根据定义的顺序来赋值
3.本地代码块——定义方法内的代码块
很少使用 !!!
4.同步代码块——在以后我会讲解的,先欠着
四、内部类的了解
内部类的简单概述:在一个类的内部定义的类就是内部类,可分为:实例内部类、静态内部类、匿名内部类。本质上内部类与外部类一致
在以后的使用中我们需要声明使用的那个内部类的前缀,因为不同的内部类的使用方法,默认规则不同。
1.实例内部类
1.定义一个实例内部类 ,内部类可以被更多的权限修饰符修饰
2.如何创建一个实例内部类对象
分析:我们可以想象为,实例内部类与外部类的成员方法或成员变量是同一等级的,所以在使用外部类的成员方法或成员变量时,我们需要创建一个外部类对象,所以在使用实例内部类的时候,我们也需要创建一个外部类对象
3.实例内部类中不能定义一个静态的成员变量
分析:使用静态的成员变量或方法不需要创建对象,但是在使用内部类的时候我们需要创建对象 ,但是必要使用可以加上final,将他变成一个常量,在编译的时候就已经确定他的值。
4.在实例内部类中可以使用外部类的成员变量或方法,
分析:如果内部类与外部类重名,我们优先使用的时内部类值
如果我们必须使用外部类的值时,我们可以使用外部类的名称.变量名
4.内部类的字节码文件
分析:我们知道在JAVA的编译过程中一个类就对应一个字节码文件
2.静态内部类
被static修饰的内部类
1.实例化一个静态内部类,static修饰后不在需要外部类对象,相比而言 静态内部类的使用更多
2.在静态内部类中只能使用外部类的静态成员,必要访问在内部类中实例化外部类对象