Java学习 ---- Day12

Day12
知识点杂记
数组和类属于引用类型 引用类型变量内存图,引用类型指向一个对象时,对象是在堆内存里面,引用变量是在栈内存中(方法中的变量)
引用变量存储的是内存地址值
构造方法有返回值 但不需要写返回值类型
当方法的返回值不是void,必须有return返回对应的返回值
创建类的时候加上无参构造
静态代码块 执行顺序 依次执行静态元素 从上往下 依次执行 包括静态代码块 静态变量(静态方法是调用才执行)
执行时间:第一次加载类时执行 只执行一次
作用:经常给静态变量赋值 实际开发中,还会把一些全局的初始化配置操作放在静态的代码块执行
局部代码块:依次执行 被调用才执行
成员代码块 依次执行 在构造方法之前执行 最后走构造方法
代码块在实际应用中 静态代码快较多 局部和成员不多

封装:把属性封装起来私有化,禁止通过对象。属性来访问 对外提供公开访问方法
private 私有的 访问权限最小 旨在当前类中可见 类可见性
protected 受保护的 当前包和其他包中的子类 子类可见性 子类可以访问到父类中的protected 修饰的属性
默认(什么也不写) 当前包可见,只能在当前包下
public 公开的 当前项目的所有包都可以访问 (可以跨包访问)
用private 修饰属性,在类外不能给属性赋值,此时复制方法如下:

给对象的属性赋值 :
构造方法
set(提供public 修饰的set和get方法)

封装
封装:体现在程序中,就是类的属性的私有化,不对外直接暴露。 将一个功能封装到一个方法中 但是 ,还要对外提供功能,所以,需要对外暴露调用的方法。

封装的优点: 简单 安全 方便

封装的层次
1. 方法封装了功能
2. 类封装了 属性 和 功能
3. 权限(可见性) 的封装 四个访问修饰符 修饰 属性 和 方法
private : 私有的 , 访问权限最小 , 只在当前类中可见 , 类可见
默认(什么也不写): 当前包可见 , 包可见行
protected : 受保护的 , 当前包和其他包中的子类 , 子类可见性
public : 公开的 , 当前项目的所有包都可以访问
4.java 实现封装:
不直接对外暴露属性 , 如果需要操作属性 , 通过对外暴露的方法来,也就是使用 private 修饰属性 ,在类外就不能直接给属性赋值了
。 提供public 修饰的 set 方法 和 get 方法 ,来分别设置属性的值 和 获取属性的值 ,也就是属性的赋值和取值。

public void setXxx(dataType fieldName){
			this.fieldName = fieldName;
		}
		public dataType getXxx(){
			return this.fieldName;
		}
补充: 类的 属性 和 方法 都可以使用 这四个访问修饰符来修饰      private 默认  protected public 修饰
	类 只能用 public  和 默认 来修饰 , 而且 public 修饰的类 必须和 .java 文件同名

总结: 以后 写实体类 (javabean) 属性一般 都用 private 修饰 ,然后提供 public 的 get 和 set 方法 进行 获取值 和 设置值

以后创建完对象给对象的属性赋值的两种方式: 
	1.  有参构造
	2.  set 方法

继承
继承:把重复的代码提取出来放在一个类中,让出现重复代码的那些类 ,继承提取出来的这个类 。
概念: 在多个类中,存在相同的属性和方法时,代码的重复性太高 ,把重复的属性和方法抽取出来封装到一个类中 ,然后让这个类和之前的类存在一种关系 ,可以让之前的类使用封装出来的这个类的属性和方法,这种关系就叫继承。
继承的优点:

  • 继承是服用程序代码的有力手段,当多个类之间存在相同的属性和方法时 ,可以从这些类抽取出来父类 ,在这个父类中来定义属性和方法,那么子类的这些类就不用定义这些相同的属性和方法了,只需要继承抽取出来这个类。

继承语法:
关键字 extends

  	public class Dog extends Amimal 。。。
   public class Cat wxtends Animal 。。。
   
 子类 Dog 、Cat 就拥有了父类中  public protected  修饰的属性和方法 ,如果父类子类在同一个包下,还拥有默认的属性和方法。

关于继承还有很多注意事项:

  1. java 中的继承是单继承 ,一个类只能有一个直接父类。
  2. 可以有多层继承 ,一个类只能有一个直接父类,它的父类也可以有父类 ,这个类可以拥有多层父类的属性和方法。
    3.如果没有指定父类 ,即没有通过 extends 关键字指定父类是谁 ,那么他拥有一个默认的父类 Object ,Object 是所有类的顶级类。(object类可以引用任意类型)

创建子类实例的时候,会先调用父类的构造方法 ,初始化父类的数据 ,以供子类实例使用 ,在内存中,会给子类实例分配内存空间,子类实例的内存空间中,包含了父类的初始化数据 。
区分 子类和父类中的数据 :
使用 super 和 this 关键字来区分
this 指向子类数据
super 指向 父类数据

PS:今天进CSDN看来推荐的几篇文章,突然很想体会那种写CSDN上瘾的感觉,但是详细看了下发现大佬都是花费不短时间才写出这么精彩的博客,所以记录一下,希望以后能记得去尝试下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值