Java——继承,块

Java——对象(block & extends)

开闭原则: 对修改关闭,对扩展开放

语句块block 块 {},自成作用域

局部代码块(普通语句块):定义在方法中,跟随方法使用,声明一些临时变量;

构造代码块:定义在类中方法外,跟随new对象一起使用,构造块在构造器要执行的代码之前执行,如果有多个,从上到下一次执行;(为静态或非静态成员属性赋值)

静态块:类中方法外,只在类的第一次加载完后执行一次,如果有多个,从上到下一次执行(整个类进行某些初始化操作);

	执行顺序: static -> 主方法 ->构造块->构造器

debug

package & import

package是为了防止命名冲突造成的不便

package类似一个文件夹,文件夹内有各种文件,package与package附属用 英文句号 ” . “连接;

例如
java.lang.String 就是java文件夹中的 lang文件夹中的 String 文件。

java.io.InputStream 则是java文件中io文件夹中的InputStream文件

不同package内不允许存在相同class类名;

	格式
	package语句作为java源文件的第一条语句,知名
	该文件中定义的类所在的包。
	package pkg1[.pkg2[.pkg3...]];
	或
	package com.java01.test; 	
	//(该文件中所有的类位于.\com\java01  目录下)

注意:

  1. 不要定义与jdk相同的包,相同的类
  2. 加包不要使用默认包
  3. com.oop 和 com.oop.test 这两个包没有包含关系,是两个完全独立的包(特例)

GC

略略略略略略略略略

继承

继承:使用继承可以提高代码复用

	父类/超类/基类 :根据一些子类抽象,抽取共有抽象部分,
	定义在父类中
	
	子类/派生类 :子类继承父类,有权使用父类中的内容,可以
	定义子类中的新增内容,所以子类是父类的延续+扩展实现类
	的继承机制;
	
	用extends作为关键字

子类继承父类的成员变量和方法,不继承父类的构造方法
子类只有一个父类,想要实现多继承,则需要接口来实现
如果类没有调用extends,则默认其父类是:java.lang.Object

优点

	简化类的定义,事项代码的重用
	方便扩展程序
	继承父类后,可使用父类成员,同时扩展定义子类独有内容
	java单继承,实现简单

缺点

	子类依赖父类,独立性差
	只有一个父类,不够灵活,后期维护不便

super
super是 指向父类的引用

	super可以在子类构造器中调用父类某个构造器
	若构造方法没有调用父类的构造方法,则编译器自动加上一个
	默认的super()方法调用。如果父类由没有默认的无参构造方
	法,编译器会报错,super()语句必须是构造方法的第一个字句;
	
	super可以用来区分子类父类中的同名成员
	如果不存在同名问题,可以直接在子类中调用父类内容,super
	默认省略;
	如果存在同名,则i累调用同名成员,默认this调用当前子类同名
	成员,先要调用父类同名成员,必须定义为super.成员
在这里插入代码片

this 和 super

重写 & final

重写 和 重载:都是方法的特性

	方法的重载 : OverLoad
	一个类中的多个方法
	 方法名相同
	参数列表不同(方法签名:方法名+参数列表,来区分方法)
	
	方法的重写: Override
	不同的类
	继承|实现
	方法签名相同

重写方法:

当子类对父类中继承的某一个方法的方法体不满意,需要进
行修改,可以在子类中定义重写 方法,重新 定义方法体的实现

检查重写方法的方式:

  1. 左侧向上三角形
  2. 在重写方法的上面添加 一个注解,强制检查是否为重写 方法 @Override

调用 :
当子类重写了父类的方法时,子类采用就近原则使用自己的重写方法,子类如果没有重写,调用父类的

注意:子类重写了父类方法,会对父类方法进行屏蔽

重写的要求:

  1. 方法签名
  2. 返回值类型:基本数据类型->相同 引用数据类型:子类<=父类
  3. 权限修饰符:子类>=父类

以下修饰符修饰的方法不能重写:

  1. private修饰的方法不能被重写(无法继承)
  2. final修饰的方法不能被重写
  3. static修饰的方法不能被重写

注意:如果子类中存在与父类静态 方法同名的方法,那么子类的方法要求也是static的

final

  1. 被final修饰的被不能被继承
  2. 被final修饰的方法不能被重写
  3. 被final修饰的变量为常量

Object 类

java.lang.Object 包下的常用方法

1. public boolean equals(java.lang.Object)比较对象的地址
   值是否相等,如果子类重写,则比较对象的内容是否相等;
2. public native int hashCode() 获取哈希码
3. public java.lang.String toString() 把数据转变成字符串
4. public final native java.lang.Class getClass() 获取类结
   构信息
5. protected void finalize() throws java.lang.Throwable垃
   圾回收前执行的方法 
6. protected native Object clone() throws 
   java.lang.CloneNotSupportedException克隆
7. public final void wait() throws java.lang.InterruptedException
   多线程中等待功能
8. public final native void notify() 多线程中唤醒功能
9. public final native void notifyAll() 多线程中唤醒
   所有等待线程的功能
发布了9 篇原创文章 · 获赞 9 · 访问量 1220
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览