首页 > 编程语言 > 详细

这是第三波java笔记

时间:2018-07-31 20:02:57      阅读:145      评论:0      收藏:0      [点我收藏+]

面向对象的特征三 多态性
1多态性指的是什么?多态性可以理解为一个事物可以表现为多种表现形态
(1)方法的重载与重写(2)子类对象的多态性
虚方法的调用:通过父类的引用指向子类对象,当调用方法的时,实际执行的子类重写父类的方法
子类对象的多态性的使用的前提:(1)要有类的继承(2)子类要有对父类方法的重写(3)程序运行分为编译状态和运行状态,编译时看左边,将此引用变量理解为父类类型,运行时,看右边,关注与真正对象的实体:子类的对象,那么执行的方法就是子类重写的
使用抢转符可以向下转型
格式:instanceof 类A:判断对象a是否是类A的一个实例是的话返回true否则faslse
若a是A的实例,那么a也一定是A父类的实例
子类对象的多态性并不适用于属性
equals():(1)只能处理引用类型变量。(2)在Object类,发现equals()仍然是比较两个引用变量的地址值是否相等
比如Sting,包装类,File类,Date类会重写equals方法,重写效果是比较两个对象的实体内容是否相同
java.lang.Object
1.当我们打印一个对象的引用时,默认调用toString方法
2.当我们打印的对象所在的类没有重写Object中的toString方法时,name调用的就是Object中的
返回此对象所在的类以及对应的堆空间对象实体的首地址
重写时常常将对象的属性信息返回,可以手动实现和自动调用
@Test进行单元测试方法:
1.在前工程下 -右键build path-add librarier-Junit4
2.在主类中,创建一个空参的返回值方法,(如:public void test1())用于代码测试,方法上声明:@Test
3.导入import org.junit.Test;
4.在test1()方法中,进行代码的编写
5.测试,双击方法名,右键run as-junit Test即可
封装类:对于布尔类型来讲,当形参是true时返回true,除此之外都是false
默认值会改变
可以与基本数据类型相互转化:调用包装类XXX的XXXValue()方法 格式:int i1=i1.intValue()
JDk5.0之后,自动装箱拆箱
基本数据类型,包装类转化为String类
int i1=10
(1)String str1=i1+“”;
(2)String str2=String.valueOf(i1);
Sring类转化为基本数据类型,包装类
int i3=Interger.parseInt(str2);
static关键字,静态的,可以用来修饰属性,方法,代码块,内部类
static修饰属性(类变量)
1.有类创建的所有对象,都共用一个属性
2.当其中一个对象对此属性进行修改时,会导致其他对象对此属性的一个调用
3.类变量是随着类的加载而加载的,而且独一份
4.静态变量可以直接通过类.类变量的形式调用
5.类变量的加载要早于对象,
6.实例变量是随着对象的创建而被加载的
7.类变量存在于静态域中
static修饰方法(类方法)
1.随着类的加载而加载,在内存中也是独一份
2.可以直接通过"类.类方法"的方式调用
3.内部只可以调用静态的属性或静态的方法,而非静态的却可以调用静态的属性或方法
4.静态的方法类不能有super或this
注:静态的结构的生命周期要早于非静态的结构,回收也晚
单例的设计模式(恶汉式)
1.解决的问题:使得一个类只能创建一个对象
2.如何实现:
1.私有化构造器,使得类的外部不能调用此构造器
2.在类的内部创建一个类的实例
3. 私有化此对象,提供公共的方法来调用
4.此公共的方法只能通过类来调,所以
声明为static, 所以类的实例的声明必须为static声明
关于属性赋值的操作:1.默认的初始化2.显示的初始化或代码块的初始化(此两个结构按照顺序进行)3.构造器4.通过方法对对象的相应属性修改
初始化块(代码块):代码块如果有修饰的话,只能用static
2.分类:使用static修饰的叫静态代码,不使用的叫非静态代码
非静态代码块:1.里面可以进行属性的初始化操作
2.里面可以有输出语句
3.一个类中可以有多个非静态代码块,多个代码块结构之间按照顺序结构执行
4.每创建一个对象,代码块加载一次
5.非静态代码块的执行要早于构造器
静态代码块:1.里面可以有输出语句
2.随着类的加载而加载,而且只加载一次
3.多个代码块之间进行顺序执行
4.静态代码块早于非静态
5.静态的代码块只能进行静态操作(类属性,类方法)
final:最终的可以用来修饰类,属性,方法
1.final修饰类,name这个类就不能被继承。如:String,StringBffer,System
2.final修饰方法,不能被重写,如Object类的getclass
3.final修饰属性:此属性就是一个,常量。习惯上用大写字母表示。此常量不能使用默认初始化,可以显示化赋值
如果一个变量用static final修饰:全局常量
abstract修饰类,抽象类
1.不可被实例化
2.抽象类有构造器(凡是类都有构造器)
3.抽象方法所在的类一定是抽象类
4.抽象类中可以没有抽象方法

abstract修饰方法,抽象方法
1.格式:没有方法体,包括{},如public abstract void eat();
2.抽象方法只保留方法的功能,而具体的而执行,交给继承抽象类的子类,由子类重写此抽象方法
3.若子类继承抽象类,并重写所有的抽象方法,则此类可以实例化
4.若子类继承抽象类,没有重写所有的抽象方法,则此类必须声明为抽象类
abstract不能用来修饰属性,构造器,不能与private,final,static共用
接口(interface是与类并行的一个概念)
1.接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合
2.接口是没有构造器的
3.接口定义的就是一个功能。此功能可以被类实现,比如:class CC implements AA
4.实现接口的类必须要重写其中所有的抽象方法,方可实例化,若没有重写所有的抽象方法,则此类扔为一个抽象类
5.类可以实现多个接口
6.接口与接口之间也是继承关系,而且可以进行多继承
常量
1.所有的常量全部用public static final修饰
抽象方法
所有的抽象方法都用public abstuct修饰
接口与具体的实现类之间也存在多态性

这是第三波java笔记

原文:https://www.cnblogs.com/iamlost/p/9397826.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!