封装与继承

封装

什么是封装?
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装的优点:

  1. 良好的封装能够减少耦合。

  2. 类内部的结构可以自由修改。

  3. 可以对成员变量进行更精确的控制。

  4. 隐藏信息,实现细节。

实现封装的方式:使用访问控制符

public           同类 同包 子类 不同的包
protected         同类 同包 子类
default(没有访问控制修饰符) 同类 同包
private           同类

下面展示是最简单用法:
如果你报错了,请写两个类,我的一个叫Father,一个叫Demo

package com.hp.ss;
public class Father {
	private String name="";
	public String getName() {
	
	}
	public void setName(String name) {

	}
}


package com.hp.ss;
public class Demo {
public static void main(String[] args) {
	Father f=new Father();
	System.out.println(f.getName());
	f.setName("张三");
	System.out.println(f.getName());
}
}
输出结果:
     //这里是有值的,为空字符串
张三

继承:

关键字:extends
extends 获取父类拥有的属性跟成员方法
Object是万类之祖
java中只能单继承,只有一个父类。
构造方法不能继承过来,私有的属性可以继承不能直接使用。私有的方法不能继承。
创建子类对象必须先调用父类的构造方法(默认调用父类无参数构造方法)
super()表示构造方法的时候必须放在第一行。this()表示构造方法的时候也必须放在第一行,但是切记两个不能在第一行
package com.hp.ss;
public class Father {
	//这是父类
	public Father(){
		System.out.println("这是父类的构造方法");
	}
}

package com.hp.ss;
public class Son extends Father {
	//这是子类
	public Son(){
	//下面会打印两个父类的构造方法
	super();//是因为他会默认加上这段代码,表示调用了父类的构造方法
		System.out.println("这是子类的构造方法");
	}
}

输出:
这是父类的构造方法
这是父类的构造方法
这是子类的构造方法

继承中有两个经常用到的东西
一个叫复写(重写)和重载,很多人区分不了这两个的差别
重写是重写父类的方法,那么也就是说两者要有继承关系,也就是说父类的方法无法满足我现有的需求,需要重写我自己想要的需求
重载是指重载子类中的方法,两者完成的功能相似,但是重载中所带的参数不一样,而重写必须参数一样。

复写

复写:关键字override 
对于父类继承过来的方法重写覆盖里面的逻辑
复写具有自己的规则:
1:方法必须一样
2:参数列表必须一样
3:必须具有访问权限
4:返回类型<=父类的类型

下面该动动手了:

package com.hp.ss;
public class Father {
		public  void method(){
		System.out.println("我是父类的成员方法");
		}
}

package com.hp.ss;
public class Son extends Father {
	public void method(){
		System.out.println("我是子类的成员方法,我复写了父亲");
	}
}


public static void main(String[] args) {
		Father f=new Father();
		Son s=new Son();
		f.method();
		s.method();
}

输出:
我是父类的成员方法
我是子类的成员方法,我复写了父亲

重载

重载的方法会有一个绿色的小箭头
重载的规则:
1.方法名必须相同
2.参数列表一定不一样
public class Son extends Father {
	//属性
	public int age;
	//构造方法
	public Son(){
		//调用父类构造方法
		super();
	}
	
	public void method(){
		System.out.println("我是子类的成员方法,我复写了父亲");
	}

	public void method(int i){
		System.out.println("我是子类的成员方法,我重载了上面的方法");
	}

	public int method(int i,int a){
		System.out.println("我是子类的成员方法,我重载了上上面的方法");
		age =i;
		return age;
	}
}

public static void main(String[] args) {
	Son s=new Son();
	s.method();
	s.method(1);
	s.method(1, 2);
	System.out.println(s.age);
}

输出:
我是子类的成员方法,我复写了父亲
我是子类的成员方法,我重载了上面的方法
我是子类的成员方法,我重载了上上面的方法
1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值