java面向对象笔记

  ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.面向对象时一种思想,将功能封装进对象,强调具备了功能的对象

2.面向对象三个特征: 封装、继承、多态。  找对象,建立对象,使用对象,维护对象之间的关系

3.类和对象的关系: 类就是对现实生活中事物的描述,是对具体的抽象

对象是这类事物实实在在的个体,具体对象是对应java在堆内存中用new建立的实体

属性对应类中的变量,行为对应类中的函数(方法),共同成为类中的成员(成员变量,成员方法)

使用对象的方式:对象.对象成员

Car c = new Car();  c是一个类类型变量,类类型变量指向对象

4.成员变量和局部变量

作用范围不同:成员变量作用于整个类中; 局部变量作用于函数中,或语句中;

内存位置不同:成员变量在堆内存中,因对象存在而存在; 局部变量在栈内存中。

5. 匿名对象: new 类名().方法;   如 new Car.run();

使用方式: 当对对象只使用一次时,可以用匿名对象。  使用完变垃圾

可以将匿名对象作为实际参数进行传递

6.封装 Encapsulation  隐藏对象的属性和实现细节,仅对外提供公共访问方式

好处:将变化隔离 便于使用  提高重用性 提高安全性、

封装原则:将不需要对外提供的内容都隐藏;  将属性封装,对外提供公共方法对其访问;

7. 构造函数

特点:函数名与类名相同    不用定义返回值类型  不可以写return语句

对象一建立,就会调用对应的构造函数。  构造函数用于给对象初始化

当一个类没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数。

当在类中定义了构造函数时,默认的构造函数就没有了。  ;  多个构造函数是以重载的形式存在的

构造函数与一般函数对比: 构造函数在对象一建立就运行,给对象初始化; 一般函数是对象调用才执行,给对象添加功能

            一个对象建立,构造函数只运行一次; 一般函数可以被对象调用多次

8:构造代码块   {     ...................     }

作用:给对象进行初始化  对象一建立就运行,而且优先于构造函数执行

区别:构造代码块是给所有对象进行统一初始化; 构造函数是给对应函数进行初始化

9. this 代表它所在函数所属对象的引用 (哪个对象调用函数,this代表哪个对象)

10. static  是一个修饰符,用于修饰成员变量,成员函数

当成员被静态修饰后,多了一个调用方式,除了被对象调用,还可以被类名直接调用。   类名.静态成员   Person.country

特点:1.随着类的加载而加载   随着类的消失而消失,生命周期长(普通成员变量随对象创建而存在,称为实例变量)

2.优先于对象存在      3.被所有对象共享      4可以被类名所调用

实例变量与类变量区别:

1. 类变量被放在内存的共享区,也称为方法区、数据区; 实例变量随着对象的建立而存在于堆内存中

2.类变量生命周期最长,随着类的消失而消失;   实例变量生命周期随着对象的消失而消失

静态的使用注意事项: 静态方法只能访问静态成员; 静态方法中不可以定义this super 关键字,因为它优先于对象存在;  主函数是静态的

11. 主函数是一个特殊的函数,作为程序的入口,可以被jvm调用

public 代表该函数访问权限最大

static 代表主函数随着的类的加载已经存在

  main 不是关键字,是一个特殊的单词,可以被jvm识别

参数 是字符串类型的数组

  主函数是固定格式的, 变量名args可以随意写,原名arguments

jvm在调用主函数时,传入的是 new String[0]

12.  什么时候定义静态变量?  当对象中出现共享数据时

  什么时候定义静态方法?  当功能内部没有访问到非静态数据时

用静态方法组成的工具类, 可以强制让该类不能创建对象, 可以通过将构造函数私有化完成。

13. 帮助文档的制作  javadoc。  java的说明书通过文档注释来完成

/**

  这是一个xxx工具类

  @author  小米

  @version  V1

*/

/**

  @param  abc

  @return   

*/

  写文档的类必须是public  或 protected 修饰的

一个类中的默认构造函数,其权限和所属类是一致的

14. 静态代码块 随着类的加载而执行,只执行一次。  用于给类初始化,优先于其他成分执行

  static {     .............  }

15. 对象的初始化过程:

  1. 先找到class文件,加载到内存中

  2.执行类中的static代码块

  3.在堆内存中开辟空间,给对象分配内存地址

  4.在堆内存中建立对象的特有属性,并进行默认初始化

  5. 对属性进行显示初始化  各种赋值

  6.对对象进行构造代码块初始化

  7.对对象进行对应的构造函数初始化

  8.将对象的内存地址赋给栈内存的变量

16. 设计模式 一共有23种    解决某一类问题最行之有效的方法

  单例设计模式:解决一共类在内存中只存在一共对象

  懒汉式: 方法被调用时,对象才初始化。  Single 类进内存,对象还没存在,只有调用了get方法时,才建立对象

  饿汉式:Single类一进内存,就已经创建好了对象

class Single  //饿汉式
{
    private Single(){}
    private static Single s = new Single();
    public static Single getInstance()
    {
        return s;
    }
}

  

class Single    //懒汉式
{
    private Single(){}
    private static Single s = null;
    public static Single getInstance()
    {
        if(s==null)
            s = new Single();
        return s;
    }
}

17. 继承: 提高了代码的复用性

      让类与类之间产生了关系,从而有了多态的特性

  类与类之间有所属关系时,才可以继承。

  java只支持单继承,多继承容易带来安全隐患,当多个父类中定义了相同功能,功能内容不同时,子类对象不确定运行哪一个

  java保留了这种机制,并用另一种体现形式来表示,叫多实现。

  java支持多层继承。

18.子父类出现后,类成员的特点

  1.变量  如果子类中出现了非私有的同名成员变量,子类要访问本来中的变量,有this; 访问父类中的变量,用 super。 this代表本来对象的引用, super代表父类对象的引用

2.函数  当子类出现和父类一模一样的函数时,子类对象调用该函数,会运行子类的函数,父类的函数会被覆盖(重写)

      覆盖的特点: 子类覆盖父类,必须保证子类的成员权限大于对应的父类权限,否则编译失败 ;  静态只能覆盖静态

      重载只看同名函数的参数列表,重写:子父类函数要完全一样

19.子父类中构造函数的特点:

  子类的实例化过程

  子类的所有的构造函数,默认都会访问父类中空参数的构造函数。

  因为子类每一个构造函数的第一行都有一句隐式的super(); 当父类中没有空参数构造函数时,子类必须手动通过super形式指定要访问父类中的构造函数

  子类的构造函数第一行也可以指定this语句访问本类中的构造函数,子类中只有会有一个构造函数访问父类中的构造函数

20.final 关键字

  1.可以修饰类 、 函数 、 变量

  2.被final修饰的类不可以被继承。  继承有个弊端:破坏了封装性

  3.被final修饰的方法不可以被重写

  4.被final修饰的变量是一个常量,只能赋值一次。既可以修饰成员变量,又可以修饰局部变量

    应用:描述事物时,一些数据的值是固定的,为了增强阅读性,给这些值起名,用final修饰。作为常量,书写规范所有字母大写,单词间下划线连接

  public static final double PI = 3.14;

  5.内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量

21.抽象类的特点:

  1.抽象方法一定在抽象类中   2.抽象方法和抽象类都必须被abstract修饰    3.抽象类不可以用new创建对象

  4.抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后建立子类对象使用。如果子类只重写了部分抽象方法,那么该子类还是抽象类

  abstract  int  power();

  抽象类不可以实例化。

  抽象类中可以不定义抽象方法,作用是不让建立对象

22. 模板方法: 在定义功能时,功能的一部分时确定的,但有一部分是不确定的,确定的部分在使用不确定的部分,那么这时就就将不确定的部分暴露出去,

  由该类的子类完成。

23. 接口 interface   是一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式表示

   接口中成员修饰符是固定的

  成员常量: public static final

  成员方法: public abstract

  接口不可以创建对象,需要被子类实现。子类对接口中的抽象方法全部覆盖之后,才可以实例化。   implements

  

  接口可以被类多实现, java中一个类只能继承一个类,但可以同时实现多个接口

  接口与接口之间可以有继承关系

24. 多态: 某一类事物的多种存在形态

  多态的体现:父类的引用指向了自己的子类对象 ;  父类的引用也可以接受自己的子类对象

  多态的好处: 大大提高了程序的扩展性

  多态的前提:必须是类与类之间有关系:继承、或实现   ;  存在覆盖

  多态的弊端: 提高了扩展性,但是只能使用父类的引用访问父类中的成员

  当父类引用指向了自己的子类对象,可以强制将该引用转换成子类类型。

  关键字 instanceof :  对象名 instanceof 类名   用于判断该对象是否属于该类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

时间: 2024-10-10 07:31:09

java面向对象笔记的相关文章

Java面向对象笔记3

Java类必须包含一个或一个以上的构造器,使用构造器最大的好处就是在创建对象时,对类的Field进行初始化(当创 建一个对象的时候,系统为这个对象的Field进行默认初始化,如果是基本类型如数值型赋值为0,如果是引用类型的 Field赋值为null),如以下代码: public class Teacher { private String name; private int age; public Teacher(){ } public Teacher(String name,int age){

Java面向对象笔记5

封装.继承.多态是面向对象的三大特征,继承是实现类重用的重要手段,但是继承会带来一个最大的坏处,那就是破坏 封装.因此接下来介绍组合,组合是实现类重用的重要方式,能提供更好的封装性. 子类扩展父类的时候,可以从父类那里继承得到Field和方法,假设现在我们有足够的权限,那么子类就可以直接复用父 类的Field和方法,但继承在带来高度复用的同时,也带来了一个严重的问题,继承严重的破坏了父类的封装性.在封装 时,我们应该遵守这个原则:每个类都应该封装它内部信息和实现细节,而只暴露必要的方法给其他类使

Java面向对象笔记4

封装.继承.多态是面向对象的三大特征,在Java中什么是多态? Java引用变量有两种类型,分别是编译时类型和运行时类型.何为编译时类型,编译时类型就是由声明该变量时使用的类型决定,而运行时类型是由实际赋给该变量的对象决定 的,也就是说如果编译时类型和运行时类型不一致时,就可能出现上面提到的多态. 我们看下下面的程序: class BaseClass { public String name = "BaseClass"; public void base() { System.out.

Java面向对象笔记2

接下来我们来看看面向对象语言中的方法,在定义方法时,发现它与结构化程序设计语言中函数尤为相似,值得注意 的是,Java里的方法是不能独立存在的,所有的方法都定义在类里. 那我们口中所讲的方法与函数到底有什么区别呢? 在结构化编程语言中,整个软件是由一个个的函数组成:而在面向对象编程语言里,整个软件是由一个个的类来组 成.因此定义方法时,只能定义在类中,如果使用static来修饰,那这个方法就是属于这个类,否则这个方法就属于这 个类的实例. 平时我们在同一个类的一个方法调用另外一个方法时,如果被调

Java面向对象笔记1

我们知道在面向对象的程序设计语音中有两个很重要的概念,就是类和对象,其中类是某一批对象的抽象,我们可以 把类理解成某种概念,那对象就是一个具体存在的实体. 在接下来讲解的Java语言就是一门面向对象的程序设计语言,其中类和对象是核心. 在Java中创建类主要如下格式: <span style="font-size:18px;">public class Teacher { }</span> 其中修饰符除了public之外,还可以使用其它修饰符,如:final.a

[52PJ] Java面向对象笔记(转自52 1510988116)

面向对象概念 面向对象三大特征:封装,继承,多态 面向对象编程(OOP,Object Oriented Programing)是相对于面向过程编程说的,之前写的代码基本都是纯的面向过程编程的,当项目复杂了,那么纯面向过程代码实现会很复杂,面向对象可以简化代码的结构和组织关系.面向对象不是替代面向过程的,宏观是面向对象,微观仍然是面向过程. 类(class)和对象(Object):人.王力宏 类的定义 最简单的类:class Person{ } class Person{private int a

Java面向对象笔记9

如果一个类的对象是有限而且固定的,比如季节类,它只有4个对象,像这种实例有限而且固定的类,我们在Java 中被称为枚举类. 枚举类是Java 5 新增的,使用enum关键字来定义枚举类,枚举类是一个钟特殊的类,它一样可以有自己的Field. 方法,可以实现一个或者多个接口,也可以定义自己的构造器.在一个Java源文件中最多只能定义一个public访问 权限的枚举类.枚举类与普通类存在以下区别: 1.枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,并

Java面向对象笔记8

如果将一个类放在另一个类内部,那这个类就被称为内部类,内部类的主要作用如下: 1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类. 2.内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相 访问.但外部类不能访问内部类的实现细节,例如内部类的成员变量. 3.匿名内部类适合用于创建那些仅需要一次使用的类. 成员内部类被分为两种:静态内部类和非静态内部类,使用static修饰的成员内部类是静态内部类,没有使用stat

Java面向对象笔记7

抽象类是从多个类中抽象出来的模板,在此基础上如果将这种抽象进行的更彻底,那么就可以提炼出一种更特殊 的"抽象类"------接口,接口里不能包含普通方法,接口里的所有方法都是抽象方法. 我们知道类是一种具体实现体,而接口定义了一种规范,接口定义了某一批类所需要遵守的规范,接口不关心这些 类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类 就可以满足实际需要.可见,就看就是从多个相似类中抽象出来的规范,接口不提供任何实现.接口体现的是规范