Java编程继承之路

本文介绍了Java中的继承概念,如何创建继承关系,子类对象的创建过程,包的使用及其作用,访问修饰符的区别,子类的继承性,成员变量的隐藏,以及方法重写与重载的区别。深入浅出地讲解了面向对象编程的关键要素。
摘要由CSDN通过智能技术生成

活动地址:CSDN21天学习挑战赛

一、什么是继承

  1.继承体现的是一种父子关系。
  2.继承是由一个已有的类创建出新类的机制。【扩展】
    已有的类称为父类
    新类称为子类
  3.继承是面向对象的特征之一。

二、如何完成一个继承关系

  继承是由一个已有的类【父类】创建出新类【子类】的机制。
  首先确保父类的存在。
  通过extends关键字实现继承关系
  继承格式:
    public class 新类 extends 父类{ }
例如:

public   class  Person{

}
public  class  Student  extends  Person{

}

  Student—>子类,Person—>父类,Student子类是对Person父类的扩展。

三、子类对象创建过程

  对象创建—>需要依赖于构造方法
  子类对象创建需要依赖于子类的构造方法,子类的构造方法会默认调用父类的构造方法【没有父就没有子】
  如果一定要强制访问调用父类有参的构造方法,就需要在子类的构造方法第一行通过“super(参数值)”,就可以指定调用父类的任意一个构造方法。
例如:

package com.wangxing.demo1;
public class Person {
	public  Person() {
		System.out.println("父类无参数的构造方法");
	}
	public  Person(String name) {
		System.out.println("父类有参数的构造方法--参数name=="+name);
	}
}

package com.wangxing.demo1;
public class Student extends Person{
	//子类对象创建---需要依赖于子类的构造方法,子类的构造方法中会默认调用父类的构	
	//造方法【没有父就没有子】,如果一定要强制访问调用父类有参数的构造方法,就需	
	//要在子类的构造方法中的第一行通过“super(参数值)”,就可以指定调用父类的任意	
	//一个构造方法。
	public  Student() {
		super(); //父类的无参数构造方法[默认可以省略]
		//super("zhangsan"); //父类的有参数构造方法
		System.out.println("子类Student的无参数构造方法");
	}
}

package com.wangxing.demo1;
public class Test1 {
	public static void main(String[] args) {
		new Student();
	}
}

运行结果:

在这里插入图片描述

四、Java中如何创建一个包

  package关键字+【空格】+包名; [首行]

五、Java中包的作用

  (1)方便管理Java类
  (2)区分名称相同的Java类/接口

六、Java中包的具体用法

  import 包名+类名/*;【次行】
  Java.lang包不需要导入。

七、Java中访问限制修饰符的区别和用法

  Java中有四种权限修饰符,分别是public,protected,default【缺省的/友好的】,private

  Java类–public【任何位置,不用担心跨包】/ default【缺省的/友好的】【跨包不能访问】

  Java类中的成员变量—>public,protected,default【缺省的/友好的】,private

  Java类中的方法—>public,protected,default【缺省的/友好的】,private

  public【公共的】/protected【受保护的】/default【缺省的/友好的】/private【私有的】

修饰符同一个类中同一个包中不同包子类不同包非子类
public可以可以可以可以
protected可以可以可以不可以
缺省的可以可以不可以不可以
private可以不可以不可以不可以

八、Java中子类的继承性

  1.Java中的类是单继承。
  2.同一个包中子类可以继承父类中除过private修饰的变量/方法。
  3.不同包中子类可以继承父类中public/protected修饰的变量/方法。
  4.子类中的变量和方法,一部分是子类从父类继承的,另一部分是子类自己创建。

九、成员变量的隐藏

  1.在同一个类中,局部变量的名称与某一个成员变量的名称相同
  2.在子类中的某一个成员变量的名称与父类某一个成员变量的名称相同

例如:

package com.wangxing.test1;
public class Person {
	public char  name='A';
	public  void test() {
		String name="zhangsan";
		System.out.println("name=="+name);
		//如果需要强制输出被隐藏的成员变量的值“this”
		System.out.println("name=="+this.name);
	}
}

package com.wangxing.test1;
public class Student extends Person{
	public String name="lisi";
	public  void testStudent() {
		System.out.println("name=="+name);
		//如果需要在子类中强制输出被隐藏的成员变量的值“super”
		System.out.println("name=="+super.name);
	}
}

package com.wangxing.test1;
public class Test1 {
	public static void main(String[] args) {
		Person  person=new Person();
		person.test();	
		Student  stu=new Student();
		stu.testStudent();
	}
}

运行结果:

在这里插入图片描述

十、方法重写

  方法重写:在子类中某一个方法与父类中的某一个方法相同,此时就是子类重写父类的方法。【被子类重写的方法一定是能够被子类继承】
例如:

package com.wangxing.test1;
public class Person {
	public  void  info() {
		System.out.println("父类Person的实例方法");
	}
}

package com.wangxing.test1;
public class Student extends Person{
	public  void info() {
	  System.out.println("子类Student类重写父类的info实例方法");
      //如果强制使用被重写的父类方法
	  super.info();
	}
}

package com.wangxing.test1;
public class TestMain {
	public static void main(String[] args) {
		Student  stu=new Student();
		stu.info();
	}
}

运行结果:

在这里插入图片描述

十一、方法重载与方法重写的区别

方法重载方法重写
同一个类中子类中
方法名称相同方法名称相同
方法参数不同方法参数相同
与方法返回值类型无关方法返回值类型相同
强制使用被重写的父类方法super.方法

总结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值