super,访问权限修饰符,方法重写

super:

this和super用法类似,this代表本类引用,super代表父类引用
this和super的对比使用
访问成员变量
this.成员变量 ……………… super.成员变量
访问构造方法:
this():访问本类无参构造 …………this(参数列表) 访问本类带参构造
super():访问父类无参构造 …………super(参数列表) 访问父类带参构造
访问成员方法:
this.成员方法();访问本类成员方法
super.成员方法(); 访问父类成员方法

this和super的区别
this代表当前对象,super可以理解为父类对象
既然super理解为一个父类对象,那么super应该可以用访问父类的成员

this的主要作用是用来帮我们初始化本类成员(当外界传入的变量名和本类变量名相同的时候)

任何一个本类成员默认都隐含一个this
任何一个本类的成员同时也可以使用super访问父类的成员

super特点:
1.任何一个构造方法都默认会在构造方法的第一句上写上super(),访问父类的无参构造方法
Constructor call must be the first statement in a constructor
2.super和this访问构造方法必须出现在构造方法的第一句
this和super在访问构造方法的时候,二者不能共存
3.static静态的上下文中不能出现this和super
4.super的主要作用是帮助我们初始化父类继承过来的成员

package com.sxt.superdemo;

public class SuperDemo01 {
	public static void main(String[] args) {
		Zi zi = new Zi(20);
		
		Fu f = new Fu();
	}
}

class Fu /*extends Object */{
	public int num;
	public int x;
	public int y;
	
	public Fu() {
		super();
		System.out.println("我是父类无参构造方法");
	}

	public Fu(int num) {
		this.num = num;
	}

	public Fu(int num, int x, int y) {
		this.num = num;
		this.x = x;
		this.y = y;
	}
	
}

class Zi extends Fu{
	public int num2;
	
	public Zi() {
		super();
		System.out.println("我是子类无参构造方法");
	}
	
	public Zi(int num2) {
		super();
		this.num2 = num2;
	}
	
	public Zi(int num, int x, int y, int num2) {
		super(num, x, y);
		this.num2 = num2;
	}
	
}

访问权限修饰符:
访问权限修饰符总结:
1.访问权限修饰符有四个
2.访问权限修饰符可以修饰成员变量,成员方法,还可以修饰类(只有public可以)
在这里需要注意,其实protected/private也可以修饰类,但是必须是内部类

四个修饰符的特点:
1.public修饰的成员对一切类可见
2.protected修饰的成员对子类可见
3.default修饰的成员仅对同包下可见
4.private修饰的成员仅对本类可见

访问权限修饰符的宽严关系
public > protected > default > private

Java当中封装就是通过访问权限修饰符来实现的
封装: 就是屏蔽内部的成员,而屏蔽内部的成员是通过访问权限修饰符来控制的

方法重写:

为什么方法重写:
父类的功能不能够满足子类的需求,需要方法重写
方法重写的概念:覆盖父类的方法,实现自己所持有的功能

方法重写的特点:
1.发生在具有子父类关系的两个类中
2.方法名称相同
3.参数列表完全相同(参数的个数,顺序,类型都一样)
4.返回值类型可以相同或者是其子类
5.访问权限修饰符不能够严于父类
6.子类声明的异常不能都被扩大

访问权限修饰符的宽严关系
public > protected > default > private
方法重写的注意事项:
1.私有修饰的方法去不能够被重写【因为私有修饰符的方法不能够被继承】
2.构造方法不能够被重写
3.子类重写父类方法时,访问权限修饰不能够严于父类
4.子类声明的异常不能够被扩大
5.重载和重写的区别?
重载的特点:发生在同一个类中,方法名相同,参数列表不同
重写的特点:如上所示
6.重写是多态的必要特点

package com.sxt.overridedemo;

import org.omg.PortableInterceptor.AdapterManagerIdHelper;
public class OverrideDemo01 {
}

class LaoWang {
	protected String name;
	protected int age;
	protected String address;
	
	public void sing() {
		System.out.println("唱山路十八弯");
	}
	
	public void dance() throws RuntimeException {
		System.out.println("老年DISCO");
	}
	
	public XiaoWang method() {
		return new XiaoWang();
	}
}

class XiaoWang extends LaoWang {
	
	public void sing(int x) {
		System.out.println("上中国好声音");
	}
	
	public void dance() throws NullPointerException {
		System.out.println("街舞");
	}
	
	public XiaoWang method() {
		return new XiaoWang();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值