java基础学习重点

**********************
this关键字;
1、当成员变量名和局部变量名相同时,指向成员变量;
2、调用本类中的构造方法;要放在构造函数中的第一句
this();//调用本类无参的构造方法
***********************
static
1、修饰全局变量(地址指向的值变了,共享区的值也发生改变)
2、 静态的函数可以直接访问静态的成员,但不直接能访问非静态的成员
3、静态函数不能有this和super
4、构造代码块在创建对象的时候执行,静态代码块优先于对象.类文件加载到内存的时候执行
5、如果一个函数没有之间访问到非静态的成员
时,就可以用static修饰,一般用于工具类型的方法
*****************************
静态和非静态的区别
作用:
1、静态的成员 变量作用是共享一个数据给所有的对象使用
2、非静态的成员变量的作用是描述一类实物的公共属性
存储:
1、静态的成员变量是存储方法区内存中的,只会存在一份数据
2、非静态的成员变量是存储在堆内存中,有多少对象就有多少数据
生命周期:
1、静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失
2、非静态的成员数据是随着对象的创建而存在,随着对象被回收而消失
***********************************
单例设计模式:
一个类在内存中只有一个对象
饿汉步骤:
1、私有化构造函数
2、申明本类的引用类型变量,并使该变量指向本类对象
3、提供一个公共的静态方法来获取本类对象
懒汉步骤:
1、私有化构造函数
2、申明本类的引用类型变量,但是不要创建对象
3、 提供公用的静态方法提取本类的对象,获取之前判断是否创建本类的对象,没有就创建
******************************
继承extends
注意:
1、不能继承私有private
2、父类的构造函数不能被继承
3、创建子类对象时,默认会先调用父类无参的构造函数
***************************
super关键字
int x = super.x;
super.eat();
代表父类空间的引用


作用:
1、子父类存在同名的【成员】时,在子类中默认访问子类的成员,可以通过super关键字指定访问父类的成员
2、创建子类对象时,默认会先调用父类无参的构造方法,可以通过super指定调用父类的构造方法
   super(name);


注意:
1、如果在子类的构造方法上没有指定调用父类的构造方法,那么java编译器会在子类的构造方法上加上super
2、对super的调用必须是构造器的第一个语句
3、this();//调用本类无参的构造方法
super与this不能同时出现在同一个构造函数中调用其他的构造函数。


super关键字和this的区别:
1、代表的事物不一致
 (1)super关键字代表的是父类空间的引用
 (2)this关键字代表所属函数的调用者对象
2、使用的前提不一样
 (1)super关键字必须要有继承关系才能使用
 (2)this关键字不需要存在不需要存在继承关系也可使用
3、调用构造函数的区别
 (1)super关键字是调用父类的构造函数
 (2)this关键字是调用本类的构造函数
***************************
方法重写:子父类出现了同名的函数
注意:
1、方法名与形参列表必须一致
2、子类的权限必须大于等于父类的权限修饰符
3、子类的返回值类型必须要小雨等于父类的返回值类型
方法的重载:在一个类中,存在两个或两个以上的同名函数,称为方法的重载
注意:
1、函数名一致
2、形参列表不一致
3、与返回值无关
********************************
Instanceof:判断一个对象是否属于指定类别
使用前提:判断对象与指定的类别必须要存在继承或者实现的关系 
使用格式:
    对象 instanceof 类
作用:
1、多态
2、强制类型转换
**************************************
final关键字
1、final修饰一个基本类型的变量时,该变量不能重新赋值
2、final关键字修饰一个引用类型变量时,该变量不能重新指向新的对象
3、final关键字修饰一个函数的时候,该函数不能被重写
4、final修饰一个类时,该类不能被继承
常亮的修饰符一般为public static final
************************************
抽象类:我们在描述一类事物的时候,发现这种事物确实存在某种行为,但是这种行为目前是不具体的,嘛呢我们可以抽取这种行为的声明,但是不去实现该种行为,这时候我们称作为抽象行为  
1、如果一个函数没有方法体,那么该函数必须使用abstract修饰,把函数修饰成抽象的函数。
2、如果一个类出现了抽象的函数,那么该类必须使用abstract修饰
3、如果一个非抽象类继承了抽象类,那么必须把抽象类的所有抽象方法全部实现
4、抽象类可以存在非抽象方法,也可以存在非抽象的方法
5、抽象类没有抽象方法
6、抽象类是不能创建对象的,因为抽象类是存在抽象方法的,那么使用抽象类的对象调用抽象方法,是没有任何意义的
7、抽象类是存在构造函数的,其构造函数是提供给创建对象的时候初始化父类属性的。
注意:
abstract不能与一下关键字共同修饰一个方法:
1、private(私有的,不可见)
2、static(类名.方法直接调用,抽象的冲突)
3、final(最终的,不能重写)
**************************************
值交换
1、形式参数是数据所属函数的局部变量
2、不同函数的局部变量与局部变量是相互独立,没有任何的关联
如果是不同的引用类型变量,操作同一个对象,那么肯定会影响到结果
*****************************************
一个类只能有一个直接的父类,但是可以有多个间接的父类
接口:拓展功能
接口的定义格式:
     interface 接口名{ 
         int i=10;//成员变量(常量)
         public abstract viod print();          
                  //成员函数(抽象的)
   }
注意:
1、接口是一个特殊的类
2、接口的成员变量默认修饰符为:public static final
(常量)
3、接口的方法都是抽象的方法
4、接口不能创建对象
5、接口是没有构造方法的
6、接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中的所有方法全部实现
实现接口的格式:
 class 类名 implement 接口名{}
作用:
1、拓展功能
2、定义约束规范
3、程序的解耦
类与接口之间的关系:实现关系
注意:
1、非抽象类实现一个接口时,必须要把接口中的所有方法全部实现
2、抽象类实现一个接口时,可以实现也可以不实现接口中的方法
3、一个类可以实现多个接口
接口与接口之间的关系:继承关系
一个接口是可以继承多个接口的
**********************************************
多态:一个对象具有多种形态(父类的引用型变量指向了子类的对象)
多态的前提:必须存在继承或者实现关系
多态要注意的事情:
1、子父类存在同名的成员变量时,访问的是父类的成员变量
2、子父类存在同名非静态的成员函数时,访问的是子类的成员函数
3、子父类存在同名静态的成员函数时,访问的是父类的成员函数
4、不能访问子类特有的成员
总结:多态情况下,子父类存在同名的成员时,访问的是父类的成员,只有在同名的非静态函数时才是访问子类的
多态的应用:
1、多态用于形式参数类型的时候,可以接受更多类型的数据
2、多态用于返回值类型的时候,可以返回更多类型的数据


多态的好处:提高了代码拓展性
******************************************
目前多态情况下不能访问子类特有的成员
如果需要访问子类特有的成员,需要强制类型转换:
(大—小)小数据类型 变量=(小) 大数据类型
引用数据类型转化:
animal a  = new  mouse("laoshu");
mouse  m  = (mouse)a;
m.dig();//老鼠特有的成员函数
*****************************************
多态:父类的引用类型变量指向了子类的对象或者是接口的引用类型变量指向了接口实现类的对象。
实现关系下的多态:
  接口 变量  =new 接口类型的对象;
********************************************
内部类:一个类定义在另一个类的内部 
内部类的类别: 
(一)成员内部类
访问方式:
1、在外部类提供一个方法创建内部类的对象进行访问
2、在其他内直接创建内部类的对象
格式:外部类.内部类 变量名=new 外部类().new 内部类();
内部类的好处:内部类可以直接访问所有成员
3、如果是一个静态内部类,那么在其他类创建的格式:
外部类.内部类 变量名 = new 外部类.内部类();
内部类注意:
1、如果外部类和 内部类存在同名的成员变量时,在内部类中默认访问内部类的成员变量
2、私有的成员内部类只能在外部类提供一个方法创建内部类的对象进行访问,不能在其他类创建对象
3、成员内部类一旦出现了静态的成员,那么该类也必须使用static修饰:静态的成员数据是不需要对象存在才能访问的  
(二)局部内部类
*************************************************
匿名内部类:没有类名的类
好处:简化书写
使用前提:必须存在继承或者实现关系
 new animal(){
         public animal run(){
          return this;};
public void sleep(){};
}.run().sleep();
//匿名内部类与animal是继承关系,创建的是animal子类的对象 
匿名内部类一般是使用实参   
**************************************************
异常
1、捕获
     try{可能出现异常的代码}
catch(捕获的异常类型 变量名)
{处理异常的代码}
2、抛出


1、运行时异常:(runtimeexception)如果一个方法内部跑出了一个运行时异常,那么方法上
可以申明可以不申明,

2、编译时异常:那么方法上必须申明,必须处理



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值