Java是一门面向对象语言,Java中一切皆对象,其含义是任何时候都可以抽象成对象。面向对象的思想更容易人们思考,举个简单的例子。
人在Java中就可以抽象成为一个对象,类是是对对象属性的抽象,类中定义了该类事物所具有的属性,比如人有名字,身高,性别,年龄等属性,而人类的对象可以有很多,即人的个体可以有很多,每个人又具有不同的名字,身高,性别,年龄等,对象就是类的实体。
定义Java中的类需要通过class 关键字来调用。格式:
访问修饰符 class 类名{实体}类的实体内容通常包括类的属性,方法。属性和方法可以有多个。创建类的对象时,需要使用new关键字,格式为 new [类名()]类的构造方法,构造方法可以重载,与类名相同,若没有定义类的构造方法,系统会自动为类生成一个无参的构造方法。一旦为类添加构造方法,系统便不会再为类创建无参的构造方法。即如果为类添加了一个有参的构造方法,系统不会再为类创建无参构造方法,此时如果需要使用无参构造方法,需要自己添加。另外构造方法只有访问修饰符,不能有返回值类型。构造方法和普通方法一样可以定义为public,protected,private,私有构造方法在jdk中也有使用,如runtime。
使用new关键字创建类的对象时,类中属性的初始化优先于构造方法执行。使用子类的构造方法创建对象时,先调用父类的构造方法,再调用子类的构造方法。
Java中的成员变量是指在类中定义的变量,局部变量是在方法中定义的,成员变量和局部变量的区别:
1,成员变量的作用范围为类内部,局部变量只能在方法中使用。
2,Java会给成员变量赋初始值,而局部变量不会。
3,方法中不能出现同名的局部变量,同一个类中成员变量也不可以同名。
4,当成员变量和局部变量同名时,在方法内部优先访问局部变量。就近原则。
静态修饰符static
静态成员是类成员,可以直接通过类名调用。静态初始化块在类加载的时候执行,而且只会执行一次,静态初始化块中只能初始化静态成员变量。
封装
封装是把类的一些内容隐藏在类的内部,只能在类的内部进行访问,可以通过方法从外部进行访问。这样做的好处:
1,只能通过规定的方法进行访问,增加了规范性;
2,隐藏内部信息,增加数据的安全性,且方便修改和实现。
通常类中都会实现set/get方法,以访问类内部的数据。
访问修饰符:
Java中的访问修饰符private,protected,public;private的访问权限仅限在类的内部。protected可以再类的内部,包内及子类中访问,即使子类在别的包内也可以访问。public可以跨包访问,default为缺省访问,访问权限为包内。
this和super关键字
this指针指向当前对象,super指针指向父类对象。
内部类:
内部类的主要作用如下:
1,内部类提供了更好的封装,可以把内部类中的信息隐藏在外部类中,不允许同包中的其他类访问。
2,内部类可以访问外部类的中所有数据,包括私有数据;
3,内部类中所实现的功能,外部类都可以实现。
4,内部类可以创建对象。
成员内部类和静态内部类
成员内部类创建对象时只能通过外部类的对象创建,例:
Out o = new Out();
Inn i = o.new Inn();
静态内部类可以通过外部类直接创建对象,不需要通过外部类的对象创建。
例:Out.new Inn();
方法内部类,
方法内部类只能在方法内部创建对象,注意:
方法内部类不能再外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符(public,protected,private)和static。
继承
Java中的类只允许单继承,即一个类只能继承一个类,但是java中接口可以多继承。即一个类可以实现多个接口。Object是所有类的父类,一个类如果没有继承任何一个类,Java会隐式的继承Object,Object中常用的方法toString()(输出包名和hash值),equal()(比较地址是否相同),
多态
引用多态和方法多态
引用多态:父类的引用可以指向子类的对象。反过来不行。
方法的多态:重载,覆写。
引用多态可以进行类型转换,自动向上转换,强制向下转换,向下转换时使用instanceof关键字可以判断是否可以进行引用类型转换。
抽象类和接口
接口其实就是一个抽象类,声明接口的关键字interface。声明抽象类的关键字是abstract,声明接口时省略了abstract关键字,抽象类中声明属性和方法,不包含方法体,接口中之生命了方法,没有方法体,继承了抽象类和接口的类,要在类的内部实现接口或抽象类中的方法。声明接口的格式:
访问修饰符 interface 接口名{}
接口中只包含常量和抽象方法。常量public final static和public abstract 通常省略不写。
抽象类中的abstract不能省略。
UML(统一建模语言)Visio,powerdesigner。