面向对象总结

面向对象总结

1.面向过程和面向对象的区别及概念

面向过程关注的是程序的执行过程,面向对象关注的是具有这个程序功能的集合对象。执行者转为了指挥者。
比如:如果问题改成: 把100只大象依次关进冰箱,共分为几步?
面向过程的回答: 此处需要省略N字。。。
面向对象的回答还是2步:
1招一个能操作冰箱的工人(对象) , 2指挥工人把大象依次装进去。

类与对象

表示一个共性的产物,是一个综合的特征,而对象,是一个个性的产物,是一个个体的特征。类是一个实物的设计图纸由属性和方法组成,对象是图纸做出的包含各种特征的实物,创造出来以后才具有实物功能。所以类必须通过对象才可以从理论变成现实来使用,对象中所有的操作都要在类(图纸)上先定义出来。

对象与内存分析

创建对象格式:类名称 对象名称 = new 类名称() ;
new表示申请内存空间,实例化对象、创建对象

封装性(三大特征之一)

概念:隐藏对象的属性和实现细节,仅对外公开接口,为其提供setter及getter方法进行设置和取得操作。

构造方法

Person p = new Person();
在右侧Person后面出现的小括号, 其实就是在调用构造方法 !
用于对象初始化。
所有的类都至少有一个构造方法(无参、有参)
方法名称必须与类名相同, 没有返回值类型的声明
方法重载:方法名称相同, 参数类型或参数长度不同, 可以完成方法的重载

static关键字

被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
并且不会因为对象的多次创建 而在内存中建立多份数据
使用static关键字修饰一个属性:声明为static的变量实质上就是全局变量
使用static关键字修饰一个方法:在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法
使用static关键字修饰一个类:
在访问时: 静态不能访问非静态 , 非静态可以访问静态 !

继承(三大特征之一)

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类
父类-子类
格式:
[访问权限] class 子类名 extends 父类名{
  类体定义;
}
protected,修饰的属性或方法可以被子类继承

方法的重写

在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
父类中的方法若使用private、static、final任意修饰符修饰,那么,不能被子类重写。

抽象类

抽象类必须使用abstract class声明
在抽象类的使用中有几个原则:
· 抽象类本身是不能直接进行实例化操作的,即:不能直接使用关键字new完成。
· 一个抽象类必须被子类所继承,被继承的子类(如果不是抽象类)则必须覆写(重写)抽象类中的全部抽象方法。

接口

如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接口。
如果一个接口要想使用,必须依靠子类。 子类(如果不是抽象类的话)要实现接口中的所有抽象方法。

多态性

多态:就是对象的多种表现形式,(多种体现形态)
重载: 一个类中方法的多态性体现
重写: 子父类中方法的多态性体现。
对象的多态性

instanceof关键字

判断某个对象是否是指定类的实例,则可以使用instanceof关键字
实例化对象 instanceof 类 //此操作返回boolean类型的数据
if(a instanceof b){
  //…
}
判断一个对象a是否为某个类b的实例,1 or 0

内部类

内部类就是在一个类的内部定义的类。
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。
广泛意义上的内部类一般来说包括这四种:
1、成员内部类
2、局部内部类
3、匿名内部类
4、静态内部类
1.成员内部类
成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式:
class Outer {
private double x = 0;
public Outer(double x) {
this.x = x;
}
class Inner { //内部类
public void say() {
System.out.println(“x=”+x);
}
}
}
2、局部内部类
局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或
者该作用域内。

public People getPerson(){
class Student extends People{ //局部内部类
int age =0;
}
return new Student();
}

3.匿名内部类
new 父类构造器(参数列表)|实现接口()
{
//匿名内部类的类体部分
}
(1)不能有构造方法,只能有一个实例。
(2)不能定义任何静态成员、静态方法。
(3)不能是public,protected,private,static。
(4)一定是在new的后面,用其隐含实现一个接口或继承一个类。
(5)匿名内部类为局部的,所以局部内部类的所有限制都对其生效
4.静态内部类
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。

public class Test {
	public static void main(String[] args) {
	Outter.Inner inner = new Outter.Inner();
	}
}
	class Outter {
	public Outter() {
	}
	static class Inner {
		public Inner() {
		}
	}
}

静态的含义是该内部类可以像其他静态成员一样,没有外部类对象时,也能够访问它。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值