概念:
java语言就是面向对象的语言,使用面向对象编程就要把对象抽象化成类,类实例化就是对象,通过代码使对象整合起来容易理解。把问题看成若干个对象,这些对象没有关系,但相互完成工作。
什么是对象:
现实世界中存在的事物,万物皆对象。
什么是类:
类是对象的抽象化,是对象的模板,具有一个对象的相同特征。
类的组成:属性和方法。
1.面向对象三大特征
封装
概念:隐藏对象的实现细节和属性,对外公开接口,通过访问修饰符限定了访问权限。
四大访问修饰符:
访问修饰符可以修饰属性和方法体。
继承
概念:两个类直接或间接存在父与子的关系,一个类继承另一个类。继承是类与类之间的关系,类支持单继承,接口实现了多继承。继承父类的方法和属性。子类可以根据访问修饰符来对父类的对象及其属性进行访问。
优点:提高了代码的复用性,利于维护。
缺点:降低了程序的耦合度。子类受限于父类。
多态
概念:在继承的基础上对代码进行简化,在事务实现上提供多种实现方法。
特点:
1.必须存在继承关系。
2.父类型的引用指向子类型。
3.父类没有的方法,子类的方法不能实现多态。
优点:提高了代码的扩展性。
缺点:子类独有的属性与方法无法使用。
2.面向对象的一些关键字
final
使用:修饰方法和属性
作用:
1.修饰的类无法继承
2.方法无法覆盖
3.变量只能赋一次值,并且只能手动初始化
4.修饰的引用指向某一个对象就不能在指向其他对象,对象内部数据可以改变
5.和static一起使用是常量
this
1.一个应用,一个变量,内存地址指向了自身,在堆内存中
2.不能使用在带static的方法中
abstract class(抽象类)
1.抽象类无法实例化和创建对象,可以被子类继承
2.方法都是抽象方法,有构造方法
interface(接口)
1.属性是常量,由public static final修饰,可以省略
2.方法是抽象方法,由public abstract修饰,可以省略
3.支持多继承
接口和抽象类的区别
1.接口是完全抽象的,抽象类是半抽象的
2.接口没有构造方法
3.抽象类只能单继承
3.面向对象的方法
概念:现实世界中要做的事,通过代码整合成方法,去实现一些功能,里面的方法体里有属性。
分类
1.静态方法
组成:通过访问修饰符修饰来决定其访问权限,有访问修饰符 static 返回类型 方法名 参数和方法体组成。
特征
1.通过对象或者类来调用
2.静态方法只能调用静态方法
2.实例方法
组成:通过访问修饰符修饰来决定其访问权限,有访问修饰符 返回类型 方法名 参数和方法体组成。
特征
1.只能通过对象来调用
2.实例方法之间可以互相调用
3.抽象方法
组成:通过访问修饰符修饰来决定其访问权限,有访问修饰符 abstract 返回类型 方法名 参数和方法体组成。
特征
1.不能直接调用抽象方法,只能通过子类来实现方法覆盖
4.面向对象的属性
概念:对象的一些基本特征
属性的数据类型分为基本数据类型和引用类型
1.基本数据类型:byte,short,char,int,long,float,double,boolean
这八种基本数据类型的包装类都实现了自动拆装箱,可以互相转换。
2.引用类型:String,Date,Integer等存放地址和值。
按声明位置属性的分类
1.成员变量:实例变量和静态变量。
2.局部变量:在方法体和代码块,方法参数里的变量。
注意:实例方法里面不能有静态变量,除非通过(类.静态变量)的方式调用,静态方法里面不能有实例变量,除非通过(对象.实例变量)的方式调用。
5.内存分配机制
关于变量在内存中的存储:局部变量在栈区存放,引用类型存放在堆区,常量存放在常量池,要使用时直接从常量池调用,静态变量和全局变量存放在全局区,全局区又存放在方法区.
过程:运行 java代码时先启动JVM虚拟机,然后运行main方法,main方法在执行过程中在栈区生成main栈,main栈里面的地址指向堆区的地址,一一对应,要使用时调用堆区的地址来对对象进行操作,最后运行结束main栈又从栈区弹出,没用的数据被垃圾回收机制报废处理。
以上纯属个人见解,如果有问题可以提出并评论或者私信。