⾯向对象知识点总结
1、⾯向对象三⼤特征
封装:封装就是隐藏对象的属性和实现细节,仅对外公开接⼝,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和⾏为(或功能)相结合,形成⼀个有机的整体。
继承:继承就是⼦类继承⽗类的特征和⾏为,使得⼦类对象(实例)具有⽗类的实例域和⽅法,或⼦类从⽗类继承⽅法,使得⼦类具有⽗类相同的⾏为。
多态:多态指同⼀个⾏为具有多个不同表现形式或形态的能⼒,是指⼀个类实例(对象)的相同⽅法在不同情形有不同表现形式,使具有不同内部结构的对象可以共享相同的外部接⼝。
2、类与对象
对象:对象是类的⼀个实例,有状态和⾏为。
类:类是⼀个模板,它描述⼀类对象的⾏为和状态。⼀个类可以包含以下类型变量:(1)局部变量:在⽅法、构造⽅法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在⽅法中,⽅法结束后,变量就会⾃动销毁。(2)成员变量:成员变量是定义在类中,⽅法体之外的变量。这种变量在创建
对象的时候实例化。成员变量可以被类中⽅法、构造⽅法和特定类的语句块访问。(3)类变量:类变量也声明在类中,⽅法体之外,但必须声明为 static 类型。
java面向对象的特征有哪些方面3、构造⽅法
每个类都有构造⽅法。如果没有显式地为类定义构造⽅法,Java 编译器将会为该类提供⼀个默认构造⽅法。在创建⼀个对象的时候,⾄少要调⽤⼀个构造⽅法。构造⽅法的名称必须与类同名,⼀个类可以有多个构造⽅法。
4、封装
封装是指⼀种将抽象性函式接⼝的实现细节部分包装、隐藏起来的⽅法。封装可以被认为是⼀个保护屏障,防⽌该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接⼝控制。修改属性的可见性来限制对属性的访问(⼀般限制为private),可通过getter和setter⽅法访问和操作类中私有成员变量。如下代码:
class BookClass{
private String title;
private int pageNum;
BookClass(){
};
// 设置名称
public void setTille(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
// 设置页数
public void setPageNum(int pageNum) {
if (pageNum>=200) {
this.pageNum = pageNum;
} else {
System.out.println("页数输⼊错误,图书页数不能⼩于200页,设置为默认值200");
this.pageNum = 200;
}
}
public int getPageNum() {
return pageNum;
}
// 显⽰图书信息
public void detail() {
System.out.println("图书名称为:"+title+",页数为:"+pageNum);
}
}
5、继承
在 Java 中通过 extends 关键字可以申明⼀个类是从另外⼀个类继承⽽来的。⼦类拥有⽗类⾮ private 的属性、⽅法。⼦类可以拥有⾃⼰的属性和⽅法,即⼦类可以对⽗类进⾏扩展。⼦类可以⽤⾃⼰的⽅式实现⽗类的⽅法。Java 的继承是单继承,但是可以多重继承,单继承就是⼀个⼦类只能继承⼀个⽗类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的⽗类,A 类是 B 类的⽗类,这是 Java 继承区别于 C++ 继承的⼀个特性。super关键字:我们可以通过super关键字来实现对⽗类成员的访问,⽤来引⽤当前对象的⽗类。this关键字:指向⾃⼰的引⽤。final 关键字声明类可以把类定义为不能继承的,即最终类;或者⽤于修饰⽅法,该⽅法不能被⼦类重写。
6、多态
多态就是同⼀个接⼝,使⽤不同的实例⽽执⾏不同操作。实现⽅式:Java 重写(Override)、重载(Overload)、接⼝和抽象类及抽象⽅法。
7、接⼝
接⼝,在JAVA编程语⾔中是⼀个抽象类型,是抽象⽅法的集合,接⼝通常以interface来声明。⼀个类通过继承接⼝的⽅式,从⽽来继承接⼝的抽象⽅法。接⼝并不是类,编写接⼝的⽅式和类很相似,但是它们属于不同的概念。类描述对象的属性和⽅法。接⼝则包含类要实现的⽅法。除⾮实现接⼝的类是抽象类,否则该类要定义接⼝中的所有⽅法。接⼝⽆法被实例化,但是可以被实现。⼀个实现接⼝的类,必须实现接⼝内所描述的所有⽅法,否则就必须声明为抽象类。接⼝与类的区别:(1)接⼝不能⽤于实例化对象;(2)接⼝没有构造⽅法。(3)接⼝中所有的⽅法必须是抽象⽅法。(4)接⼝不能包含成员变量,除了 static 和 final 变量。(5)接⼝不是被类继承了,⽽是要被类实现。(6)接⼝⽀持多继承。接⼝特性:(1)接⼝中每⼀个⽅法也是隐式抽象的,接⼝中的⽅法会被隐式的指定为 public abstract(只能是public abstract,其他修饰符都会报错)。(2)接⼝中可以含有变量,但是接⼝中的变量会被隐式的指定为 public static final 变量(并且只能是 public,⽤ private 修饰会报编译错误)。(3)接⼝中的⽅法是不能在接⼝中实现的,只能由实现接⼝的类来实现接⼝中的⽅法。抽象类和接⼝的区别:(1)抽象类中的⽅法可以有⽅法体,就是能实现⽅法的具体功能,但是接⼝中的⽅法不⾏。(2)抽象类中的成员变量可以是各种类型的,⽽接⼝中的成员变量只能是 public static final 类
型的。(3)接⼝中不能含有静态代码块以及静态⽅法(⽤ static 修饰的⽅法),⽽抽象类是可以有静态代码块和静态⽅法。(4)⼀个类只能继承⼀个抽象类,⽽⼀个类却可以实现多个接⼝。
8、抽象类
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员⽅法和构造⽅法的访问⽅式和普通类⼀样。抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译⽆法通过。只有抽象类的⾮抽象⼦类可以创建对象。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使⽤。在Java中抽象类表⽰的是⼀种继承关系,⼀个类只能继承⼀个抽象类。抽象类中不⼀定包含抽象⽅法,但是有抽象⽅法的类必定是抽象类。抽象类中的抽象⽅法只是声明,不包含⽅法体,就是不给出⽅法的具体实现也就是⽅法的具体功能。构造⽅法,类⽅法(⽤ static 修饰的⽅法)不能声明为抽象⽅法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论