面向对象概括:
面向对象过程思想:强调的是功能和行为;
面向对象思想:将功能封装对象,强调具备功能的对象。
面向对象的三个基本特征:封装,继承,多态。
什么是类:
类是对现实生活中事物的描述。描述事物其实就是在描述事物的属性行为。
什么是对象:
对象就是这类事物,实实在在存在的个体;
为什么要定义类:
根据需求以后的开发其实就是在找对象,没对象就要创建一个对象。
对象必须具备属性和方法。
面向对象的特点:找对象,建立对象,使用对象,维护对象类的关系。
面向对象内存分析
Cat C=new Cat( );
面向对象的一些知识点
类中的属性被称为成员变量(每个对象的属性都不同);
类中的方法被称为成员方法(每个对象共享类中方法);
方法的种类
1.无参无返回值:public void get(){};
2.无参有返回值:pbulic int get(){};
3.有参无返回值:public void get(int a){};
4.有参有返回值:public String get(int a){};
关键字
return 返回语句被用于返回
this 用来指当前对象
private 隐藏类中方法或属性对外界的可见性常用于封装类
toString 每个类的一个默认方法,用于把类以字符串显示
约定俗称的命名规范
1.类名首字母必须大写
2.方法和属性必须大写
3.由多个单词组成的类名或方法必须采用驼峰标示。
例如:
1 类名 StudentAdmin2 方法或属性 StudentName
构造代码块
特点:对象只要已建立就运行了,而且优先于构造函数执行。
语法:
{ System.out.println( " " ); }
作用是给对象进行初始化。
构造代码块和构造方法的区别:
1.构造方法是对应的对象进行初始化,构造代码块是给所有的对象进行统一初始化。
2.构造代码块中定义是不同对象共性的初始化内容。
构造函数之间的调用
this关键字!!!
this:
1.区分局部变量和成员变量同名的情况。
2.代表本类对象,代表它所在函数(方法)所属对象的引用。
3.构造函数之间的调用只能通过this语句完成。
4.构造函数之间进行调用时this语句只能在第一行。
5.构造方法要先执行,如果构造方法当中还有初始化,那就去执行更细节的初始化。
Static关键字
作用:是一个修饰符,用于修饰成员(成员变量,成员方法)。
1.被static修饰后的成员变量只有一份。
2.当成员被static修饰之后,多了一种访问方式,除了可以被对象调用外,还可以被各类名直接调用。
特点:
1.随着类的加载而被加载。
2.优先于对象的存在。
3.被所有的对象所共享。
4.可以直接被类名所调用。
存放位置:
1.类变量随着类的加载而存在于data内存在。
2.实例变量随着对象的建立而存在堆内存。
生命周期:
1.类变量的生命周期最长,随着类消失而消失。
2.实例变量生命变量比类变量短,它随着对象的消失而消失。
静态方法注意事项
1.静态的方法只能访问静态变量。
2.非静态的方法即能访问静态的成员(成员变量,成员方法)也能访问非静态的成员。
3.静态的方法中是不可以定义this super关键字;
因为静态优先于对象存在,所以静态方法不可以出现this。
什么时候使用静态
1.什么时候使用静态的成员变量:
当属于同一个类的所有对象出现共享数据时;
需要将储存这个共享数据的成员变量用static修饰。
2.什么时候使用静态方法:
当功能内部没有访问到非静态的成员时(对象特有的数据);
该功能可以定义静态的。
主函数(主方法)
1.public: (访问修饰符,公共的)代表该类或者函数访问权限最大的;
2.static: 代表函数随着类的加载就已存在了;
3.void: 代表主函数没有具体的返回值类型;
4.main: main不是Java中的关键字,它是一个特殊的单词,它能被JVM(Java 虚拟机)所标识;
5.String[] args: 函数的参数,参数类型是一个字符串数组,该数组的元素是字符串;
静态代码块
语法:
static { 静态代码块中执行语句;}
特点:随着类的加载而被执行,并且只会执行一次,并且优先于主函数。
作用:用于给类初始化。
继承
子类 extends 父类(){}
概述:
1.提高代码的复用性,简化代码。
2.让类与类之间产生了继承关系,才有了后面的多态特性的存在。
注意:
千万不要为了其他的功能简化代码,而建立继承关系,必须要类与类之间存在继承关系,继承关系:is a。
子类拥有父类的成员,子类不能拥有父类中被private修饰后的成员。
Java多层继承
在多层继承最下层的子类拥有整个继承体系的成员,最上层的父类里面定义所有子类的共性描述。
Java中不支持多继承,只支持单继承
因为多继承存在安全隐患,当多个父类定义了相同的成员,子类对象不确定运行哪一个。
Java保留机制,并用了另一种方式体现多实现。
子父类中的成员变量
this: 代表当前对象的引用 this.变量
首先在本类找所需要的这个变量,如果没找到再在父类中找。
super():用于访问当前对象的父类成员 super.变量 直接父类中找所需变量。
子父类中的函数
当子类出现和父类中一样的函数,当子类对象调用该函数,运行的是子类中的函数。
如同父类中的函数被覆盖一样,这种情况就是函数的另一种特性:重写(覆盖)。
注意:
1.子类覆盖父类时,必须要保证子类权限大于或等于父类才能覆盖,否则编译错误。
访问修饰符:public>default>private
成员前面没加任何修饰访问权限,修饰法默认权限就是:default。
2.静态的函数只能覆盖静态的。
重点:
重载:只看同名的方法的参数。
重写:子父类方法要一模一样。
子父类中的构造函数
有了子父类之后构造函数的特点;
在对子类对象进行初始化的时候;
父类的构造方法也会运行,那是因为子类的构造函数默认第一行。
有一条隐式的语句:super();
子类每个构造方法第一行都有一个隐式的super();
对象转型
1.对象的向上转型:子类转成父类 默认进行(父类引用指向子类对象);
2.对象的向下转型:父类转成子类 强制进行;
关键字:
instanceof:测试左边的对象是否是右边类的实例;
如果是返回ture,否则返回false。
多态
多态的体现:父类引用指向子类对象。
多态的前提:
1.必须得与类之间存在关系,可以是继承关系,也可以是实现关系。
2.必须得有重写。
多态的好处:大大的提高提高了代码的可扩展性。
多态的弊端:提高的程序可扩展性,只能用父类引用,访问到父类中的成员。
多态父类中的成员变量的特点
1.编译期间:参阅的是引用型变量所属的类中是否有调用的方法。
2.运行期间:参阅对象所属的类中是否有调用的方法。
匿名对象
概述:没有名字的对象。
匿名对象的使用方式:
1.当对象的方法只调用一次时,我们的匿名对象来完成,比较简化。
2.匿名对象可以被当作实参传递。
A(new B());//相当与B a=new B();a.A();
Obejct类toString
概述:一个特殊的类
Obejct它是Java所有对象的直接或者间接父类,根父类(基类),它里面定义的功能是所有对象都应该具备的。
注意:
当定义一个新类时,没有指明要继承某类,它默认继承Obejct类。
Obejct类equals()
==和Obejct里面的equals其实比较的就两个对象的内存地址是否一致。
final关键字
概述:final(最终)是一个修饰符。
1.final可以修饰类,函数,变量(成员变量,局部变量)。
2.被final修饰后的类不可以被其他类继承。
3.被final修饰后的函数不可以被重写。
4.被final修饰后的变量不允许被再次赋值。
final在对变量进行修饰时一定赋值,被final修饰后的变量我们称为它变量。
注意:
常量的命名规范;
1.字母都要大写
2.如果这个名字是由多个单词组成,在单词之间用_隔开。
抽象类
关键字:abstract它是一个修饰符。
可以修饰方法和类。
当我们多个类存在相同的功能,但是功能的主体不同,这时我进行向上抽取,只抽取功能的定义不抽取功能的主体。
抽象类的特点:
1.抽象方法一定要在抽象类中。
2.抽象类和抽象方法必须要被abstract关键字修饰。
3.抽象类是不能被创建对象的,因为调用抽象的方法没意义。
4.抽象类中方法要被使用,必须由子类重写抽象类中的方法。
5.抽象类中可以定义非抽象的方法,有时我们需要此类不能被new关键字创建对象时,可以用abstract将此类变成抽象类。
6.子类如果只重写一部分抽象方法,那末该类还是一个抽象类,如果抽象类的方法要被使用,子类必须重写抽象类中的所有方法。
注意:(抽象类和普通类的区别)
1.抽象类无法通过new关键字创建对象。
2.抽象类里面可有抽象方法。
接口
概述:接口是一个特殊的抽象类,当抽象类中全部是抽象类时,可以通过接口的形式来体现。
Class //用于定义类
interfance //用于定义接口
implements // 用于实现接口
接口中成员的格式:
public static final String 变量名=" ";//全局变量pbulic abstract void show();//抽象方法
注意 :
1.接口中只能出现public修饰符 访问。
2.接口不可以创建对象,因为里面有抽象方法,需要被子类实现,
子类对接口中的所有抽象方法实现后,子类才能够实例化,否则子类就是一个抽象类。
多实现:
Java不支持多继承,因为存在安全隐患 ,当父类中定义了相同功能,功能内容不同时,子类不确定要运行哪一个。
但是Java保留这种机制,并用另一种体现形式来完成表示 这就是多实现。