卯未

导航

面向对象知识点总结

1、面向对象三大特征

       封装:封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体。

       继承:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

       多态:多态指同一个行为具有多个不同表现形式或形态的能力,是指一个类实例(对象)的相同方法在不同情形有不同表现形式,使具有不同内部结构的对象可以共享相同的外部接口。

2、类与对象

     对象:对象是类的一个实例,有状态和行为。

        类:类是一个模板,它描述一类对象的行为和状态。一个类可以包含以下类型变量:(1)局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。(2)成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。(3)类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

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 修饰的方法)不能声明为抽象方法。

 

posted on 2021-03-17 20:15  卯未  阅读(132)  评论(0编辑  收藏  举报