1.0.0 Summary

Tittle:【Java】-NO.16.EBook.4.Java.1.003-【疯狂Java讲义第3版 李刚】- oop

Style:EBook

Series:Java

Since:2017-09-04

End:....

Total Hours:...

Degree Of Diffculty:2

Degree Of Mastery:2

Practical Level:2

Desired Goal:2

Archieve Goal:....

Gerneral Evaluation:...

Writer:kingdelee

Related Links:

http://www.cnblogs.com/kingdelee/

值传递:

方法参数的传递方式,值传递的本质,即是传递副本,原值不受影响(不太准确)。

无论是基本数据类型,还是引用类型,都是采用值传递。

区别的是,引用是,副本保存的是引用地址,栈中的副本的变化即会改变堆中被引用的对象的变化。

而基本数据类型,并非引用,其改变的只有栈副本本身,而方法外的栈原值是不会被改变的。

高内聚:

尽可能把模块内部的功能在模块内部独立完成,不允许外部去干预

低耦合:

仅暴露少量的方法让外部使用

import:

系统默认导入java.lang包下的所有类。

继承时实例变量的内存分配:

创建子类对象时,系统不仅会给子类的实例变量分配内存,也会给父类的实例变量分配内存。如父类A有2个实例变量,子类B有3个,当创建子类B时,Java对象B的实力将保存5个实例变量。

构造方法:

创建子类对象时

1.若子类没有显式构造方法,则一定会调用父类的无参构造方法。

2.若子类有显式的构造方法,通过该构造方法创建对象时,构造方法第一行 一定是 显式/隐式的 this 或者 super,若有this调用本类的其他构造方法,若无this则为 显式/隐式的 super 直接调用父类对应的构造方法(显式调显式,隐式调无参构造方法)

向上转型:

子类实际上是一种特殊的父类,故父类可以直接赋值给子类,无需任何类型转换。

Object是所有类的父类,可以直接Object o = new AA();但是无法调用AA的方法

instanceof:

编译时:

前者和后者必须存在继承关系或者相同关系(无需考虑子父类顺序),否则会编译异常

运行时:

用于判断前者是否是后者的子类或者同类(子类在前,父类在后)

先用一个对象来判断是否可以强转,再去用(type)运算符进行强壮。

当把父类赋值给子类时,需要进行强制转换,而且还有可能在运行时产生类型转换异常,使用instanceof判断会更加安全

if( cat instatnceof Animal){

Animal a = (Animal) cat;

}

继承:

设计父类时:

不应在父类的构造器中调用可能被子类重写的方法。

class Animal
{
private void beat()
{
System.out.println("心脏跳动...");
}
public void breath()
{
beat();
System.out.println("吸一口气,吐一口气,呼吸中...");
}
}
// 继承Animal,直接复用父类的breath()方法
class Bird extends Animal
{
public void fly()
{
System.out.println("我在天空自在的飞翔...");
}
}
// 继承Animal,直接复用父类的breath()方法
class Wolf extends Animal
{
public void run()
{
System.out.println("我在陆地上的快速奔跑...");
}
}
public class InheritTest
{
public static void main(String[] args)
{
Bird b = new Bird();
b.breath();
b.fly();
Wolf w = new Wolf();
w.breath();
w.run();
}
}

  

组合:

类编写阶段:

1.用组合改写继承的方式,即子类不继承父类而是持有父类,并在构造方法将父类的引用对象传入并持有。

2.将需要继承父类的方法在子类中重写。

类使用阶段:分别创建父类、子类的实例,并让子类持有父类。这样子类就可以通过

class Animal
{
private void beat()
{
System.out.println("心脏跳动...");
}
public void breath()
{
beat();
System.out.println("吸一口气,吐一口气,呼吸中...");
}
}
class Bird
{
// 将原来的父类组合到原来的子类,作为子类的一个组合成分
private Animal a;
public Bird(Animal a)
{
this.a = a;
}
// 重新定义一个自己的breath()方法
public void breath()
{
// 直接复用Animal提供的breath()方法来实现Bird的breath()方法。
a.breath();
}
public void fly()
{
System.out.println("我在天空自在的飞翔...");
}
}
class Wolf
{
// 将原来的父类组合到原来的子类,作为子类的一个组合成分
private Animal a;
public Wolf(Animal a)
{
this.a = a;
}
// 重新定义一个自己的breath()方法
public void breath()
{
// 直接复用Animal提供的breath()方法来实现Wolf的breath()方法。
a.breath();
}
public void run()
{
System.out.println("我在陆地上的快速奔跑...");
}
}
public class CompositeTest
{
public static void main(String[] args)
{
// 此时需要显式创建被组合的对象
Animal a1 = new Animal();
Bird b = new Bird(a1);
b.breath();
b.fly();
// 此时需要显式创建被组合的对象
Animal a2 = new Animal();
Wolf w = new Wolf(a2);
w.breath();
w.run();
}
}

  

初始化:

静态代码块(静态初始化块)与静态成员的之间初始化顺序,以其在代码中的先后排列顺序而定。

public class StaticInitTest
{
// 先执行静态初始化块将a静态成员变量赋值为6
static
{
a = 6;
}
// 再将a静态成员变量赋值为9
static int a = 9;
public static void main(String[] args)
{
// 下面代码将输出9
System.out.println(StaticInitTest.a);
}
}

  

Java 修饰符范围总表

【Java】-NO.16.EBook.4.Java.1.003-【疯狂Java讲义第3版 李刚】- oop的更多相关文章

  1. 【Java】-NO.16.EBook.4.Java.1.011-【疯狂Java讲义第3版 李刚】- AWT

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.011-[疯狂Java讲义第3版 李刚]-  AWT Style:EBook Series:Java ...

  2. 【Java】-NO.16.EBook.4.Java.1.012-【疯狂Java讲义第3版 李刚】- Swing

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.011-[疯狂Java讲义第3版 李刚]-  Swing Style:EBook Series:Jav ...

  3. 【Java】-NO.16.EBook.4.Java.1.012-【疯狂Java讲义第3版 李刚】- JDBC

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.012-[疯狂Java讲义第3版 李刚]-  JDBC Style:EBook Series:Java ...

  4. 【Java】-NO.16.EBook.4.Java.1.005-【疯狂Java讲义第3版 李刚】- 枚举

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.005-[疯狂Java讲义第3版 李刚]- 枚举 Style:EBook Series:Java Si ...

  5. 【Java】-NO.16.EBook.4.Java.1.006-【疯狂Java讲义第3版 李刚】- 垃圾回收

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.006-[疯狂Java讲义第3版 李刚]- 垃圾回收 Style:EBook Series:Java ...

  6. 【Java】-NO.16.EBook.4.Java.1.007-【疯狂Java讲义第3版 李刚】- Java基础类

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.007-[疯狂Java讲义第3版 李刚]-  Java基础类 Style:EBook Series:J ...

  7. 【Java】-NO.16.EBook.4.Java.1.008-【疯狂Java讲义第3版 李刚】- 集合/容器

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.008-[疯狂Java讲义第3版 李刚]- 集合 Style:EBook Series:Java Si ...

  8. 【Java】-NO.16.EBook.4.Java.1.009-【疯狂Java讲义第3版 李刚】- 泛型

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.009-[疯狂Java讲义第3版 李刚]- 泛型 Style:EBook Series:Java Si ...

  9. 【Java】-NO.16.EBook.4.Java.1.010-【疯狂Java讲义第3版 李刚】- 异常

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.010-[疯狂Java讲义第3版 李刚]- 异常 Style:EBook Series:Java Si ...

  10. 【Java】-NO.16.EBook.4.Java.1.001-【疯狂Java讲义第3版 李刚】- UML

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.001-[疯狂Java讲义第3版 李刚]- Style:EBook Series:Java Since ...

随机推荐

  1. Matlab 瑞利信道仿真

    转眼间三月都已经过去一半,一直找不到有什么可以写的,一直想等自己把LTE仿真平台搭好后,再以连载的形式记录下来.但是,后来一想,我必须先做好充分的铺垫,在这过程中也遇到了很多问题,及时留下点什么,也是 ...

  2. linux-Centos 7下bond与vlan技术的结合

    服务器eno1与eno2作bonding,捆绑成bond0接口,服务器对端交换机端口,同属于301.302号vlan接口 vlan 301: 10.1.2.65/27                  ...

  3. apache 二级域名设置完整步骤

    步骤如下: 1. 你要拥有一个有泛域名解析的顶级域名,例如:abc.com 在dns服务上设置,域名服务商都提供此服务 www.abc.com      指向服务器IPabc.com          ...

  4. 170829、mybatis使用oracle和mybatis中批量更新

    一.mybatis执行批量更新batch update 的方法(mysql数据库) 1.数据库连接必须配置:&allowMultiQueries=true(切记一定要加上这个属性,否则会有问题 ...

  5. ARM Linux Oops使用小结(转)

    出现Oops消息的大部分错误时因为对NULL指针取值或者因为用了其他不正确的指针值. Oops如何产生的解释如下:     由于处理器使用的地址几乎都是虚拟地址,这些地址通过一个被称为“页表”的结构被 ...

  6. ELK(Elasticsearch6.0以上版本head插件安装)

    参考:https://www.cnblogs.com/Onlywjy/p/Elasticsearch.html Elasticsearch6.0不能使用命令直接安装head插件 修改配置文件/etc/ ...

  7. 泡泡一分钟:Towards real-time unsupervised monocular depth estimation on CPU

    Towards real-time unsupervised monocular depth estimation on CPU Matteo Poggi , Filippo Aleotti , Fa ...

  8. SQL命令中的case...when...then...else...end条件查询

    select b.XH, b.ZBXH, a.SJKSMC, a.JCRQ, a.JYRQ, a.JCJBMC, a.CYZMC,                               b.CY ...

  9. [No0000B9]C# 类型基础 值类型和引用类型 及其 对象复制 浅度复制vs深度复制 深入研究2

    接上[No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1 对象复制 有的时候,创建一个对象可能会非常耗时,比如对象需要从远程数据库中获取数据来填充,又或者创建对象需要读取硬 ...

  10. hive优化之并行执行任务

    1.与Oracle并行技术一样,hive在执行mapreduce作业时也可以执行并行查询.针对于不同业务场景SQL语句的执行情况,有些场景下SQL的执行是需要分割成几段去执行的,而且期间并不全是存在依 ...