Java:封装与继承

this 关键字

在类的方法定义中使用的 this 关键字代表使用该方法的对象的引用。
this 即”自己”,代表对象本身,谁调用代表谁。在成员方法中或构造器中隐式的传递。
作用如下: 1、this 在构造器中只能放在第一行
2、this.属性避免属性和形参、局部变量同名,发生就近原则
3、this([实参列表]): 构造器的首行调用其他构造器。
4、this 可以看作是一个变量,它的值是当前对象的引用。
5、this 不能出现在被 static 修饰的内容中
6、构造方法不能相互调用(即你调用我、我调用你),会报错,类似死循环

static 关键字

在类中,用 static 声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static 成员变量只有一份。凡是静态的都是属于类的,与对象无关的,先于对象存在的。可用于修饰属性、方法、块。
static : 类方法, 调用方式两种
①类名.静态方法名(不需要实例化) ②类名 变量名 = new 类名();
变量名.静态方法名
注意:静态方法只能使用静态内容;即被 static 修饰的方法只能使用被 static 修饰的内容。
static 关键字:静态的、公共的。
非静态的方法可以使用静态的内容。

block

块即{},可以分为:
静态块,仅在类的第一次使用时加载。
构造块,先于构造器执行,每创建一个对象执行一次。

创建子类对象时,执行顺序

  1. 父类静态块
  2. 子类静态块
  3. 父类构造块
  4. 父类构造器
  5. 子类构造块
  6. 子类构造器

以下代码

class HelloA {
	public HelloA() {
		System.out.println("HelloA");
	}
	{   System.out.println("I'm A class");
	}
	static {
		System.out.println("static A");
	}
}
public class HelloB extends HelloA {
	public HelloB() {
		super();
		System.out.println("HelloB");
	}
	{   System.out.println("I'm B class");
	}
	static {
		System.out.println("static B");
	}
	public static void main(String[] args) {
		new HelloB( );
	}
}

执行结果
static A
static B
I’m A class
HelloA
I’m B class
HelloB

封装 javaBean

封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和行为(或方法)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
(1)隐藏实现细节,提供公共的访问方式
(2)好处:
A:隐藏实现细节,提供公共的访问方式
B:提高代码的复用性
C:提高代码的安全性
(3)设计原则
把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式
(4)private 是封装的一种体现。

JavaBean
本身是一个类,属于 Java 的面向对象编程,是一个封装对象实例的封装类。
javaBean 编码规则:
(1) javaBean 必须声明为 public class,这样才能够被外部所访问;
(2) 一个 JavaBean 中至少存在一个无参构造方法
(3)类中所有的属性都必须封装,即:使用 private 声明;
(4)为封装的私有属性提供公共的 setter、getter 方法;

类的继承与权限控制

继承的本质在于抽象。类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。同时使用继承可以提高代码的复用性。(事实上,利用组合可以更好的实现代码复用!)extends 的意思是“扩展”。子类是父类的扩展。
java 中使用 extends 关键字实现类的继承机制,语法规则:
class [extends ]{}
作用: 实现代码的复用,延续+扩展父类信息。
通过继承,子类自动拥有了基类的所有成员(成员变量和成员方法)。
Java 只支持单继承,不允许多继承:一个子类只能拥有一个基类,一个基类可以派生出多个子类

访问控制

Java 权限修饰符 public protected private 置于类的成员定义前,用来限定其他对象对该类对象成员访问权限。通过访问权限的控制达到信息隐藏。
我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
访问修饰符权限
对于 class 的权限修饰只能用 public 和 default。
public 类可以在任意地方访问
default 类只可以在同包被访问
1)、属性尽可能私有化 private
2)、访问器: setter 与 getter 访问器 >private ,一般 public居多

方法的重写

父类不满足子类的要求,按需改写。注意 方法签名必须相同在子类中可以根据需要对从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同的方法名称参数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限
Override.java Overload.java
“==”:方法名、形参列表相同。
“≤”:返回值类型(基本类型必须相同) 以及抛出异常类型,子类小于等于父类。
“≥”:访问权限,子类大于等于父类

注意属性不会重写
注意以下方法不会重写
1、静态方法不会重写 ,父类为静态,子类只能为静态,否则编译错误
2、final 修饰方法 否则编译错误
3、私有方法不会重写

super关键字

1、在 java 类中使用 super 来引用父类的成员。
2、继承中的构造方法
1)、子类的构造的过程中必须调用其基类的构造方法。
2)、子类可以在自己的构造方法中使用 super(argument_list)
调用基类的构造方法。使用 this(argument_list)调用本类的另外的构造方法
3)、如果调用 super,必须写子类构造方法的第一行
4)、如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类无参的构造方法。
5)、如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错 。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值