java面向对象笔记总结
2017-07-24 21:47
323 查看
类之间的关系:
关联关系:在代码层面的表现形式,两个不同类中,一个类的对象作为另一个类的成员变量
依赖关系:在代码层面的表现形式,两个不同的类中,一个类的对象作为另一个类中方法的形参
聚合关系:在代码层面的表现形式与关联关系一致,只存在语义的差别
组合关系:在代码层面的表现形式与关联关系一致,只存在语义上的差别,例如:
public class MyDate{
private Year yera;
private Month month;
private Date date;
}
实现关系:
继承关系:
封装:
封装就是将属性私有化,再提供公有的方法访问私有属性
具体做法:
1.修改属性的可见性来限制对属性的访问(访问修饰符 private、protected)
2.为每个属性提供一个赋值方法setter()和取值方法getter(),用于对这些属性的访问
3.通过构造器对属性进行传递值,或者通过创建对象,调用属性的setter()方法和getter()方法
通过封装,可以实现对数据访问的限制,同时增加程序的课维护性
访问修饰符:
private:只能被当前类访问
默认 :只能被同一个包中的类访问
protected:可以被所有子类访问,可以被同一个包中子类访问,也可以被在不同包中的子类访问
public: 可以被本项目中的所有类访问
关键字:
java中所有关键字都是小写,大写都不是关键字。goto也是关键字,但在java中至今未使用
final:用于修饰类,属性,方法;被final修饰类不可被继承,被final修饰的属性不可被改变(一般结合static用于表示常量),被final修饰的方法不允许被重写
static:java中static元素与对象无关(凡是对属性,方法的调用都必须通过对象),与类直接相关,在类加载的时候,所有的static元素都会被初始化,static可以用于修饰属性,方法,类(内部类),被static修饰的元素可以直接通过"类名.属性名","类型.方法”直接访问,一般static元素用于不需要反复创建(对象)以及频繁使用时(一般用于工具类)
非static元素不能再static语句块(静态块,静态方法)中使用
abstract:关键字用于修饰类,以及方法,被abstract修饰的类称之为抽象类,被abstract修饰的方法称之为抽象方法
instanceof:判断一个对象是否是另一种对象类型(例如:if(Object obj instanceof Student)判断obj是否是一种Student类型)
继承:
一个类通过对另一个类的继承,实现类的复用
protected关键字通常用来修饰继承关系中父类的方法
子类立继承父类:
1.子类可以使用父类中非私有的属性和方法
2.java中只能单继承(一个子类只能继承一个父类,一个父类可以有多个子类),但可以通过多重继承以实现多继承。
3.构造器的执行并不代表对象 的创建,一旦出现new关键字,则代表对象的产生
4.构造器不能被重写,但是可以在子类中通过super关键字调用父类构造器
5.子类对象在完成构造时必先调用父类构造器(但不是创建父类对象)完成初始化操作
6.子类继承父类时,如果父类中只有一个构造器(此构造器不是默认构造器时),子类中必须声明或者调用父类中指定的构造器(也就是说子类构造器器中必须有父类构造器中参数,再加上子类自己需求的参数)
7.在子类中可以使用super调用父类中非私有的元素(成员变量,构造器,方法)
方法重写:
方法重写发生在存在继承关系的子类中,与子类重写父类中的方法,对方法内部重写以达到子而立需求
注意事项:
1.被重写的方法 名称,参数(个数,类型,顺序)、返回值类型必须与父类保持一致
2.子类重写父类方法时,被重写的方法的访问权限不能低于父类方法
3.构造器不能被重写
重写与重载都是多态的一种实现策略
方法重载:
方法重载
构造器也可以实现方法重载
方法重写与方法重载的区别:
方法重载(overload)与方法重写(override)区别:
重写重载都是多态的一种实现策略,方法的多态,方法重载通常情况发生在同一个类中包括存在继承关系的两个类中,主要表现形式为,类中包括多个同名的方法,但是方法的参数(类型,顺序,个数)必须有一项不一致,构造器也可以重载,重载与返回值无关;重写一般发生在存在继承关系的子类中,子类重写父类的方法,被重写的方法必须保持与父类结构一致(方法名,参数,返回值),子类重写的父类方法必须保持访问修饰符范围不能小于父类,构造器不能被重写
==与equals的区别:
==:基本类型比较时,比较的是数值;引用类型比较时,比较的是内存中存放数据的地址
注意:两个对象在比较时,构造器的执行并不代表对象的创建,但是只要有new关键字出现就代表创建了一个对象
例如:
super():代表调用父类构造器
equals :默认实现也是使用的“==”但是可以通过对equals方法以及HashCode的重写,达到预期目的
HashCode表示对象位于JVM内存中的地址,如果两个对象的HashCode一致则表示对象是同一个
语句块:
游离块:在类中以普通代码块的形式({})存在,游离快的执行与对象构造有直接关系,在对象构造之前执行,执行次数与对象创建次数保持一致
静态块:游离块另一种表现形式,使用static关键字修饰游离块,静态块不会反复执行,一般用于资源的开启以及获取,包括数据库的驱动;静态块的执行与对象构造无关
单例模式:
步骤:
1.定义一个私有的对象变量
2.提供一个私有的构造器
3.公开一个静态的获取创建对象的方法,其返回值为创建的对象
懒汉模式:
public class Singleton{
private Singleton instance;
private Singleton(){}
public static Singleton getSingleton(){
if(instance == null){
instance = new Singleton();
}
}
return instance;
}
4000
饿汉模式:
public class Singleton2{
private Singleton2 instance2 = new Singleton2();
private Singleton2(){}
public static Singleton2 getSingleton2(){
if(instance2 == null){
instance2 = new Singleton2();
}
}
return instance2;
}
内部类:
内部类提供了比方法更好的封装型,可以通过内部类实现类的"多继承",同时也可以解决类中方法同名(重载)问题
普通内部类
全局内部类,与普通法声明在同一个级别,不允许在普通内部类中定义静态元素
静态内部类
嵌套类,在一个类的内部声明 一个静态的内部类
局部内部类
在局部内部类的方法中如果需要使用外部方法的局部变量,则外部方法的局部变量必须声明为final(延长局部变量生命周期),局部内部类可以无限制的使用成员变量
匿名内部类
图形界面中的事件监听,Android
抽象类:
当一个类中包含的信息(属性和方法)不足以表示一个具体对象时,此时该类会定义为抽象类,抽象类一般都会包含至少一个抽象方法
声明规范注意事项:
1.使用abstract修饰
2.抽象类包含构造器,但是不允许实例化
3.抽象类中包含已实现和未实现的方法
4.抽象类通常是由子类继承然后对类的中未实现方法进行具体实现
5.一个抽象类可以继承另一个抽象类
6.一个普通类如果继承抽象类(抽象类中包含未实现的方法),则子类必须对抽象方法进行实现
多态:
方法重写与方法重载都是一种实现多态的策略
上塑造型:父类引用指向子类对象
为父类new创建子类对象
注意事项:引用父类只能使用子类中从父类继承的方法和属性,不能调用子类独有的方法
接口
是一些常量以及未实现方法的集合(jdk1.8之后可以使用默认default修饰方法),不同于类,不是一个传统意义上的类
接口是一个特殊的抽象类,不是一个传统意义上的类,接口指代一种标准
1.接口没有构造器
2.接只口不能实例化
3.内部只能包含未实现的方法以及常量
4.通常是由实现类对接口进行实现
关联关系:在代码层面的表现形式,两个不同类中,一个类的对象作为另一个类的成员变量
依赖关系:在代码层面的表现形式,两个不同的类中,一个类的对象作为另一个类中方法的形参
聚合关系:在代码层面的表现形式与关联关系一致,只存在语义的差别
组合关系:在代码层面的表现形式与关联关系一致,只存在语义上的差别,例如:
public class MyDate{
private Year yera;
private Month month;
private Date date;
}
实现关系:
继承关系:
封装:
封装就是将属性私有化,再提供公有的方法访问私有属性
具体做法:
1.修改属性的可见性来限制对属性的访问(访问修饰符 private、protected)
2.为每个属性提供一个赋值方法setter()和取值方法getter(),用于对这些属性的访问
3.通过构造器对属性进行传递值,或者通过创建对象,调用属性的setter()方法和getter()方法
通过封装,可以实现对数据访问的限制,同时增加程序的课维护性
访问修饰符:
private:只能被当前类访问
默认 :只能被同一个包中的类访问
protected:可以被所有子类访问,可以被同一个包中子类访问,也可以被在不同包中的子类访问
public: 可以被本项目中的所有类访问
关键字:
java中所有关键字都是小写,大写都不是关键字。goto也是关键字,但在java中至今未使用
final:用于修饰类,属性,方法;被final修饰类不可被继承,被final修饰的属性不可被改变(一般结合static用于表示常量),被final修饰的方法不允许被重写
static:java中static元素与对象无关(凡是对属性,方法的调用都必须通过对象),与类直接相关,在类加载的时候,所有的static元素都会被初始化,static可以用于修饰属性,方法,类(内部类),被static修饰的元素可以直接通过"类名.属性名","类型.方法”直接访问,一般static元素用于不需要反复创建(对象)以及频繁使用时(一般用于工具类)
非static元素不能再static语句块(静态块,静态方法)中使用
abstract:关键字用于修饰类,以及方法,被abstract修饰的类称之为抽象类,被abstract修饰的方法称之为抽象方法
instanceof:判断一个对象是否是另一种对象类型(例如:if(Object obj instanceof Student)判断obj是否是一种Student类型)
继承:
一个类通过对另一个类的继承,实现类的复用
protected关键字通常用来修饰继承关系中父类的方法
子类立继承父类:
1.子类可以使用父类中非私有的属性和方法
2.java中只能单继承(一个子类只能继承一个父类,一个父类可以有多个子类),但可以通过多重继承以实现多继承。
3.构造器的执行并不代表对象 的创建,一旦出现new关键字,则代表对象的产生
4.构造器不能被重写,但是可以在子类中通过super关键字调用父类构造器
5.子类对象在完成构造时必先调用父类构造器(但不是创建父类对象)完成初始化操作
6.子类继承父类时,如果父类中只有一个构造器(此构造器不是默认构造器时),子类中必须声明或者调用父类中指定的构造器(也就是说子类构造器器中必须有父类构造器中参数,再加上子类自己需求的参数)
7.在子类中可以使用super调用父类中非私有的元素(成员变量,构造器,方法)
方法重写:
方法重写发生在存在继承关系的子类中,与子类重写父类中的方法,对方法内部重写以达到子而立需求
注意事项:
1.被重写的方法 名称,参数(个数,类型,顺序)、返回值类型必须与父类保持一致
2.子类重写父类方法时,被重写的方法的访问权限不能低于父类方法
3.构造器不能被重写
重写与重载都是多态的一种实现策略
方法重载:
方法重载
构造器也可以实现方法重载
方法重写与方法重载的区别:
方法重载(overload)与方法重写(override)区别:
重写重载都是多态的一种实现策略,方法的多态,方法重载通常情况发生在同一个类中包括存在继承关系的两个类中,主要表现形式为,类中包括多个同名的方法,但是方法的参数(类型,顺序,个数)必须有一项不一致,构造器也可以重载,重载与返回值无关;重写一般发生在存在继承关系的子类中,子类重写父类的方法,被重写的方法必须保持与父类结构一致(方法名,参数,返回值),子类重写的父类方法必须保持访问修饰符范围不能小于父类,构造器不能被重写
==与equals的区别:
==:基本类型比较时,比较的是数值;引用类型比较时,比较的是内存中存放数据的地址
注意:两个对象在比较时,构造器的执行并不代表对象的创建,但是只要有new关键字出现就代表创建了一个对象
例如:
super():代表调用父类构造器
equals :默认实现也是使用的“==”但是可以通过对equals方法以及HashCode的重写,达到预期目的
HashCode表示对象位于JVM内存中的地址,如果两个对象的HashCode一致则表示对象是同一个
语句块:
游离块:在类中以普通代码块的形式({})存在,游离快的执行与对象构造有直接关系,在对象构造之前执行,执行次数与对象创建次数保持一致
静态块:游离块另一种表现形式,使用static关键字修饰游离块,静态块不会反复执行,一般用于资源的开启以及获取,包括数据库的驱动;静态块的执行与对象构造无关
单例模式:
步骤:
1.定义一个私有的对象变量
2.提供一个私有的构造器
3.公开一个静态的获取创建对象的方法,其返回值为创建的对象
懒汉模式:
public class Singleton{
private Singleton instance;
private Singleton(){}
public static Singleton getSingleton(){
if(instance == null){
instance = new Singleton();
}
}
return instance;
}
4000
饿汉模式:
public class Singleton2{
private Singleton2 instance2 = new Singleton2();
private Singleton2(){}
public static Singleton2 getSingleton2(){
if(instance2 == null){
instance2 = new Singleton2();
}
}
return instance2;
}
内部类:
内部类提供了比方法更好的封装型,可以通过内部类实现类的"多继承",同时也可以解决类中方法同名(重载)问题
普通内部类
全局内部类,与普通法声明在同一个级别,不允许在普通内部类中定义静态元素
静态内部类
嵌套类,在一个类的内部声明 一个静态的内部类
局部内部类
在局部内部类的方法中如果需要使用外部方法的局部变量,则外部方法的局部变量必须声明为final(延长局部变量生命周期),局部内部类可以无限制的使用成员变量
匿名内部类
图形界面中的事件监听,Android
抽象类:
当一个类中包含的信息(属性和方法)不足以表示一个具体对象时,此时该类会定义为抽象类,抽象类一般都会包含至少一个抽象方法
声明规范注意事项:
1.使用abstract修饰
2.抽象类包含构造器,但是不允许实例化
3.抽象类中包含已实现和未实现的方法
4.抽象类通常是由子类继承然后对类的中未实现方法进行具体实现
5.一个抽象类可以继承另一个抽象类
6.一个普通类如果继承抽象类(抽象类中包含未实现的方法),则子类必须对抽象方法进行实现
多态:
方法重写与方法重载都是一种实现多态的策略
上塑造型:父类引用指向子类对象
为父类new创建子类对象
注意事项:引用父类只能使用子类中从父类继承的方法和属性,不能调用子类独有的方法
接口
是一些常量以及未实现方法的集合(jdk1.8之后可以使用默认default修饰方法),不同于类,不是一个传统意义上的类
接口是一个特殊的抽象类,不是一个传统意义上的类,接口指代一种标准
1.接口没有构造器
2.接只口不能实例化
3.内部只能包含未实现的方法以及常量
4.通常是由实现类对接口进行实现
相关文章推荐
- Java复习笔记+经验总结-02 面向对象基础
- Java_面向对象笔记总结(一)
- JAVA面向对象笔记总结(下)
- 学习笔记3—Java基础3_面向对象上a
- java学习笔记《java面向对象编程》——面向对象开发方法概述
- 浪潮优派培训java笔记:第6章 面向对象程序设计
- 学习笔记4—Java基础3_面向对象上b
- Logic Java阶段学习总结--猜拳游戏(面向对象实例)
- 黑马程序员_Java学习日记2_面向对象总结1
- (JAVA SE 学习笔记)Java.SE.第011讲.面向对象之封装.续二(对一些原理机制进行了详细的解释,适合初学者学习)
- java笔记:第6章 面向对象程序设计
- 黒马程序员--8月1日学习笔记C#面向对象总结
- Java自学笔记之面向对象思想
- 黑马程序员_Java学习日记3_面向对象总结2
- (java基础)java面向对象部分笔记
- (JAVA SE 学习笔记)Java.SE.第009讲.面向对象之封装
- 传智播客_张孝祥_Java基础4_面向对象下_学习笔记
- java面向对象总结1-4-7
- 【JAVA学习笔记】面向对象基础
- 黑马程序员_Java学习日记5_面向对象总结4