Java新手-抽象方法与权限修饰符

一.继承
继承中的构造方法的关系
1.子类的构造函数第一行 默认有一条隐式的语句 super();
super(); 调用的是父类的无参构造
2.而且子类中所有的构造函数默认第一条都是super(); 
 
--->最上层 Object


为什么?
因为子类会继承父类中的数据,可能还会使用父类的数据
所以,子类初始化之前,一定要先完成对父类数据的初始化
当父类中没有无参构造 怎么办?
1.在子类的构造函数中 调用父类的有参构造 super(x,x)解决
2.在子类的构造函数中 调用子类其他的构造函数 从其他的构造函数在调父类 this() 解决


this() super()都要在构造函数第一行 那么只能用一个 只能二选一
this和super区别
调用成员变量:
this. 调用的本类的 也可以调用父类的
super.调用的是父类的
调用成员方法:
this. 调用的本类的 也可以调用父类的
super.调用的是父类的
调用构造函数:
this() 调用本类的
super() 调用父类的
this 代表当前对象的引用 谁来调用我 我就代表谁
super 代表当前对象的父类的引用


二.final
最终的


final 可以修饰 类 方法 变量
final 修饰的类不可以被继承
final 修饰的方法不可以被覆盖
final 修饰的变量 是一个常量 只能被赋值一次 命名规则 单词全部大写 多个单词之间用下划线分割


三.权限修饰符
包 package
为什么有包?
将字节码(.class)文件 进行分类存放
包其实就是文件夹

  1.按照功能分
删除
修改
查询
增加
  2.按照模块分
定义包的格式
package 包名; 
多级包用.分开即可
将字节码文件生成到 类中package指定的目录中
javac -d . Demo_1.java
注意:
1.package必须写在程序的第一条可执行代码
2.package语句在一个java文件中只能有一个
3.如果没有package 默认表示无包名


不同包下的类之间如何访问?
import 包名
import java.util.Scanner; -->这种方式导入是到类的名称 具体到哪个类
import java.util.*;


* :通配符 util包下的所有类 都被导入
访问权限修饰符
四个
private 私有的
default(什么也不写) 默认的
protected 保护的
public  公有的


访问权限修饰符    本类    同包(子类和无关类)   不同包下(子类)     不同包(无关类)


private           √
default           √              √
protected         √              √                  √
public            √              √                  √                 √
 
修饰符:
权限修饰符: private 默认 protected public
状态修饰符: static final
抽象修饰符: abstract
   类:
权限修饰符: 默认 public
状态修饰符: final
抽象修饰符: abstract
  成员:
权限修饰符: private 默认 protected public
状态修饰符: static final


用的最多的是 private


  构造方法:
权限修饰符: private 默认 protected public

用的最多的是 public




抽象 
一 概念
看不清
被abstract修饰的类 叫抽象类
被abstract修饰的方法 叫抽象方法


抽象类的特点:
1.抽象方法一定在抽象类中
2.抽象方法和抽象类都必须用 abstract关键字修饰
3.抽象类不可以用new创建对象 抽象类无法实例化 因为调用抽象方法没意义
4.抽象类中的方法想要被使用 必须由子类重写其所有抽象方法 建立子类对象调用
如果只覆盖部分 会继承父类的抽象方法 那么子类也是个抽象类


5.一个抽象类中可以包含抽象方法和非抽象方法 但一个方法被抽象修饰,它所在的类必须是抽象的
抽象类可以不定义抽象方法
抽象的好处?
抽象父类 让 子类 必须完成父类的全部抽象方法
功能不确定 子类去做


抽象类和普通类一样 
普通类描述行为 属性 抽象类也一样 该怎么描述还怎么描述
抽象类中 有构造函数 但是 由于"抽象"对类的限定 使得这个抽象修饰的类无法创建对象


abstract只是一个修饰符 如果定义的抽象类中没有抽象方法 那么这么定义只是为了不让该类创建对象


二 语法格式
抽象类
访问权限修饰符 abstract class 类名{
//普通属性
//普通方法
//抽象方法
}
抽象方法
访问权限修饰符 abstract 返回值类型 方法名(形参列表);

若一个普通子类继承一个抽象子类 该抽象子类又继承一个抽象的父类


那么 该普通子类必须得重写抽象父类中所有的抽象方法
但是 抽象子类已重写过的抽象方法 普通子类就不需要重写了


模板方法设计模式
当代码完成优化后,就可以解决这类问题


什么是模板方法呢?
在定义功能时,功能的一部分是确定的,但是有一部分是不确定的.而确定的部分在使用不确定的部分
那么这时就将不确定的部分暴露出去,由该类的子类去完成


不要记代码 记思想

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值