面向对象之类的成员

属性

一 变量的分类
安照类型 分类: 基本数据类型 vs 引用数据类型

安照位置分类 : 局部变量 vs 成员变量(属性)

二 局部变量和成员变量的相同和不同
2.1相同点 :

	1.都是先声明后使用
	2.声明的格式都是一样的
	3.都作用域

2.2不同点:

	位置:

		局部变量:在方法中,方法的形参,构造器中,构造器的形参代码块中都是局部变量
		成员变量:在类中方法等结构外。
		
	权限修饰符:

		局部变量:不能使用权限修饰符
		成员变量:可以使用四种权限修饰符 - private 缺省的  protected public
		
	默认值:
		局部变量:没有默认值
		成员变量:和一维数组元素的默认值一样
					
					
	内存:
		局部变量:在栈中
		成员变量:在堆中(堆中的创建的对象中)

属性赋值的方式

	1.默认值   2.显示赋值   3.构造器赋值   4.对象名.属性名、对象名.方法名   

属性赋值的顺序 :
1 -> 2 -> 3 -> 4

方法

一 方法的格式:

权限修饰符   返回值类型  方法名(形参列表){

	方法体;

}

二 方法的说明:

	1.权限修饰符 :private 缺省的   protected public (先使用public即可)
	2.返回值类型 :void(没返回值) / 具体的返回值的类型(基本数据类型/引用数据类型
			如果方法是返回值的,那么在方法体中必须使用(return 返回的数据
	3.方法名 :只需要遵守标识符的规则和规范即可。xxxYyyZzz
	4.形参列表 :可以是0个1个或多个。(如果需要调用者必须传参数时就需要形参列表)
	5.方法体 :方法功能的具体实现 (只调用方法的时候才会执行方法体

三 说明:

思考 :定义一个方法时需要思考 ?1.该方法需不需要返回值    2.该方法需不需要形参
思考:需不需要返回值?如果需要方法的返回值去做其它运算那么就必须返回数据。
思考 :该方法需不需要形参?就看需不需要方法的调用者传递数据

四 方法的四种形式:

1.无返回值无参
2.无返回值参
3.返回值无参
4.返回值参

可变形参

一 使用说明

格式 : 
	
	  变量的类型 ... 变量名
说明:
	1.可变形参的个数可以是0个1个或多个
	2.和可变形参相同类型的数组不构成重载(可变形参其实就是数组)
	3.可变形参只能放在形参列表的最后一个。
	4.在一个形参列表中最多只能有一个可变形参

二 举例说明

	public void add(int ... numbers){
		int sum = 0;
		for(int i = 0; i < numbers.length; i++){
			sum += numbers[i];
		}
 }

方法的重载

1.方法的重载的概念: 同一个类中相同的方法名不同的形参列表构成重载

两同一不同:同一个类,同一个方法名,不同的形参列表

不同的形参列表 :形参的个数,类型,顺序不同。

2.如何确定类中某一个方法的调用:方法名 + 形参列表

3.注意 : 方法的重载和权限修饰符,返回值类型,形参的名字无关。

4.举例:

public void add(int a,int b){}
public void add(double a,double b){}

构造器

一 作用:

1.创建对象   2.对对象进行初始化	

二 格式:

权限修饰符   类名(形参列表){

	执行语句;

}

三 说明:

	1.如果在类中没显示的提供构造器,那么系统会默认提供一个空参的构造器。
			那么我们创建对象时调用的就是这个默认空参构造器。
	2.如果在类中显示的提供了构造器,那么系统将不再提供默认的空参构造器。
	3.构造器可以多个,彼此之间构成重载

四 总结 : 只要创建对象必调构造器

五 思考?通过构造器给属性赋值的特点?

只能赋值一次

六 思考?即然构造器可以给属性赋值还有必要提供方法进行赋值吗?

有必要,因为后面可能需要对对象中的属性进行修改,再通过构造器修改属性值是不可能的。

七 思考:什么场景下需要使用构造器?

	1.创建对象   2.一个对象中只执行一次的代码可以放在构造器中

八 代码

public class Person{

		public Person(){

		}
}

内部类

内部类 : 在一个类A的内部再定义一个类B,类A叫作外部类,类B叫作内部类

内部类 : 成员内部类  vs 局部内部类

成员内部类 : 静态(成员)内部类  vs  非静态(成员)内部类

内部类:
	  作为类:
	  	  1.可以继承父类,实现接口
	  	  2.类内部可以有类的成员(普通类可以做的事情内部类都可以)。
	 作为类的成员:
	 	  1.可以被static修饰
	 	  2.可以使用四种权限修饰符
	 	  3.内部类还可以调用外部类的成员(属性,方法)

学习目标:

  1. 如何创建内部类的对象?

      	  	静态内部类:new 外部类名.内部类名()
    

非静态内部类 :外部类的对象.new 内部类名()

  1. 内部类如何调用外部类的成员(属性和方法)?

      静态内部类 :外部类名.类变量名、静态方法   (只能调用外部类的类变量和静态方法)
    
      		非静态内部类 : 外部类名.this.属性名、方法名
    
  2. 如何使用局部内部类?
    在这里插入图片描述

  3. 匿名内部类
    匿名内部类的特点:
    1.匿名内部类必须继承父类或实现接口
    2.匿名内部类只能有一个对象
    3.匿名内部类对象只能使用多态形式引用
    4.只用一次的类就用匿名内部类(自我阐述)

注意:
1.内部类只能调用属性和方法,不能修改。
2.内部类和外部类可以有同名的方法,互不干扰
3 .内部类和外部类的区别:内部类可以用四种修饰符修饰
外部类只能是public和缺省的修饰
外部类不能被static修饰,修饰了就没意义了
5. 静态内部类和外部类一样只能调用静态方法

匿名内部类
格式:

 父类、接口的类型  对象名  = 	new  接口名、抽象类名、类名 (){
		//重写的方法
     }

 例:
		interface USB{
			void start();
		}


		USB usb = new USB(){
			public void start(){
			}
		};
		

匿名内部类的特点

1.匿名内部类必须继承父类或实现接口
2.匿名内部类只能一个对象
3.匿名内部类对象只能使用多态形式引用

代码块

一 代码块的作用:用来对类或对象进行初始化
二 分类:静态代码块 vs 非静态代码块
1.格式:
非静态代码块: {}
静态代码块 :static{}
2.注意:代码块只能被static修饰
三 说明:
静态代码块
1.静态代码块是随着类的加载而加载的。(类加载只加载一次)
2.类加载优先于对象的创建。(静态代码块的执行优先于非静态代码块)
3.静态代码块可以多个,多个静态代码块之间是从上向下依次执行
4.静态代码块 : 不能调用实例变量和非静态方法
5.对Java类进行初始化

非静态代码块
1.非静态代码块是随着对象的创建而加载的
2.非静态代码块的执行优先于构造器
3.非静态代码块可以多个,多个非静态代码块之间是从上向下依次执行
4.非静态代码块 : 可以调用静态方法和类变量
5.对Java对象进行初始化

四 代码:

public class Computer{

	{
		//创建对象时一定要调用的代码放在非静态代码块
	}

	static{
		//随着类的加载调用。只要是在类加载时执行的代码那么就放在静态代码块中
	}

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值