面向对象基础知识总结

***面向对象总结:***
	**1.类与对象**:世间万物皆对象
		类:是同一类事务的统称
		对象:具体存在的
		
	**2.成员变量(类的属性)**:属性对应特点
  		成员方法(类的行为):方法对应行为
  		局部变量:在成员方法内定义的变量
  			局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误
  		
	**3.构造器**:构造方法是一个与类名同名的方法,对象的创建就是通过构造方法来完成的
		 类中会默认添加无参构造器
 		假设我们手动添加有参构造器,此时类中就不会自动添加无参构造器
 		
	**4.this和super:**
		this:当前对象
		super:父类对象  
		 在子类构造器(无论有参还是无参)中,默认会在第一行添加super()来调用父类的无参构造器
 		注意:也可以调用父类有参构造器,合理填写super后面的参数即可
 		
	**5.OOP-extends**: 子类继承父类,会继承父类的所有非私有的属性和方法
		 1)不管有参无参,默认调用父类无参
 		2)如何设计父类?如何设计子类?
 		3)子类继承父类,构造方法的执行顺序?父---子
 		4)单继承,多重继承
 		
 	**6.重写与重载**:
 		重写(覆盖):override:发生在子类和父类的关系上
			    当子类中含有和父类方法名相同,参数列表也相同的方法时,
		  	    返回值类型也必须一样 
		 	    访问修饰符不能比原方法严格
		 重载:overload:方法名相同,但参数列表不同(指的是类型,顺序不同)
				方法的重载与方法的访问修饰符以及返回值类型无关
		  
	**7.OOP-多态**:
		 多态需要和及继承联合使用,实现多态的话需要继承同一个父类
		 使用多态调用属性时:看对象的类型,对象的类型是什么,调用的就是那个类里边的
		 		例:Animal cat1 = new Cat();
		 		cat1是Cat类型的,用Animal父类来声明对象,用Cat子类来实例化对象
		 使用多态调用方法时:如果子类方法覆盖父类的方法,调用的就是子类的方法

		向上转型:子类对象 - - > 父类对象
		向下转型:父类对象 - - > 子类对象(强制类型转换)//编译期不会报错,而运行期会报错
							//报java.lang.ClassCaseException 类转换异常

		封装:
		    将所有属性私有化
		    注意:在面向对象的开发中,一般建议用封装的特性去编写实体类(即,将所有的属性私有化并提供get、set方法)
		    
		 对象 instanceof 类:a instanceof B
		 		表示判断该对象是否是该类的,或其子类的,实现类的实例
		 		
		 面向对象的三大特性:继承,多态,封装
		 
	**8.访问修饰符** 
				同类 同包不同类 不同包子类 不同包非子类
	 public 
	 protected
	 default
	 private
	 
	 	封装:将所有的属性私有化(private)
		  getXXX和setXXX
	**9.static和final**
	
	 static:
	  1.被static修饰的资源(属性,方法,代码块),可以直接用类名调用,无需创建对象  
 	  2.静态资源只有一份,所有的对象都共用这一个资源,如果一个对象修改了资源,
 	    其他对象获取的就是修改以后的资源
   	  3.静态资源不依赖于对象,依赖于类。静态资源在类加载的时候就被加载进来,优先于对象存在。
             所以在静态方法中不能直接调用非静态的东西,因为非静态资源需要用对象调用,但是静态方法
             加载时可能还没有对象
	   4.静态资源只加载一次
	  	子类和父类各类代码块执行顺序:
	  	    父类静态代码块—子类静态代码块—父类代码块—父类构造方法—子类代码块—子类构造方法
	  	
	 final:final表示最终的,不能被修改
	   1.final修饰的类不能被继承,终类
	   2.final修饰的方法可以被继承,但不能被覆盖
	   3.final修饰的属性,必须手动给初始值(或者在构造方法中初始化),并且给定之后不能被修改
	  final通常和static联合起来使用,用来定义常量(final和static顺序没关系)
	 	  
	**10.抽象类和接口**
	
	 抽象类:用abstract修饰的类,表示一种抽象的类型
	  比如:下面的Animal动物类,动物就是一个抽象的概念,动物有很多种类型,此处不知道就是哪种类型
	    public abstract class Animal {}
	  用abstract修饰的方法,表示一种抽象的行为(只知道要做一件事情,但是还不知道具体怎么做)
	  比如:动物都有吃东西的行为,但是每种动物吃东西的行为不同,
	  所以在动物抽象类中无法确定具体怎么吃,此时吃东西的方法就可以定义成抽象的
	     public abstract void eat();
	 	  注意:	1.抽象方法没有方法体(没有{}大括号)
		      2.抽象类不能直接创建对象,必须通过子类创建
		      3.抽象类中既可以有抽象方法,也可以有非抽象方法
		      4.继承抽象类,需要实现抽象类中所有的抽象方法
	   建议:如果有哪些行为(方法)必须得让子类去做的话,可以把这些行为(方法)定义成抽象的,
	   	这样的话,子类必须得实现这些行为(方法)
	   	
	 接口:interface修饰
	       没有具体的定义,也没有具体的行为,用来制定规则,通常被用于常用功能,便于日后维护和添加删除
	  生活中的接口:USB接口
	  interface Car{}定义了一个接口Car
	  注意:1.接口中所有的方法默认的都是 public abstract修饰的,也就是抽象方法
	    		2.接口中不能有实现的方法(具体的方法)
		     3.实现接口使用的是implement关键字
		     4.实现接口必须实现接口中所有的抽象方法
		     5.接口不能直接new出对象,必须通过实现类去创建
		     6.一个类可以实现多个接口,中间用“,”隔开
		     7.接口不能实现接口
		     8.接口可以继承接口,而且可以继承多个接口,中间用“,”隔开
		     9.接口中的属性默认都是public static final修饰的,是一个常量
		     
	 **11.参数的传递方式**
		 值传递
		 基本数据类型和String:传递的是数值
		 引用数据类型:传递的是对象的地址值
		 注意:Java中方法的参数传递,只有值传递,对于引用数据来说,地址值是不会改变的,
		 		但是可以改变对象中的内容
	 **12.内部类:**
		 在类体里面定义一个类
		 1.成员内部类:在类的成员位置上定义一个类,相当于类的成员属性
		 	1)成员内部类中既可以访问外部类的静态属性,也可以直接访问外部类的非静态的属性和方法
		 	2)类方法中要想调用成员内部类中的属性,要先创建对象,通过对象调用属性
		 	
		 2.局部内部类:在类的局部(方法或者代码块)定义一个类
		 	局部内部类可以访问外部类中的静态属性和方法,也可以访问外部类中的非静态属性和方法
		 	
		 3.匿名内部类:在类中定义一个没有名称只有类体的类(常用)
		  	什么时候使用匿名内部类?
		    	  当使用抽象类或者接口时,如果不想定义子类或者实现类时,可以使用匿名内部类
		    	  创建抽象类或者接口对象 
		    
	 	4.静态内部类(静态成员内部类):在类中定义一个前面加有static关键字的类,
	 	  相当于类的静态资源(静态属性或者方法)


	创建一个类:属性,方法,get/set方法,有参无参构造方法,toString()方法
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值