当前位置:   article > 正文

【Java面向对象】java学习之旅13-继承_子类公有继承父类,创造子类对象,其大小为多少

子类公有继承父类,创造子类对象,其大小为多少

定义:

父类派生出子类,子类继承父类,子类可以获得父类的属性和方法.

使用:

  • extends关键字,声明子类继承父类.
  • super关键字,用于指代父类对象(创建子类对象之前,会先创建父类对象)
  • super()代表父类构造方法,super.方法名()调用父类方法,super.属性名调用父类的属性

例:

/**
 * 人类(父类)
 */
 public class Person { // 声明类名,一个java文件中只能有一个被public修饰的类,并且这个类的类名和文件名一致。

	// 实体类的属性,用来描述对象的特征。
	private String name;
	private int age;
	private char sex;
	private String color;
	
	// 构造方法,用于实例化对象并初始化赋值。
	public Person() {
	}

	public Person(String name, int age, char sex, String color) {
		// this指代的是当前对象,构造方法即将创建的这个对象,或者方法的调用对象。
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.color = color;
	}

	// getters/setters方法,用于操作私有属性,还可以完成对传入值的合法性校验.
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	// 类的方法,用于描述对象的行为.
	public void eat() {
		System.out.println("吃东西");
	}
	
	public void sleep() {
		System.out.println("睡觉");
	}
	
	// 重写自Object类,用于将对象的所有属性格式化成一个字符串,便于编程过程中的调试.
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", color=" + color + "]";
	}
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
/**
 * 学生类(继承父类)
 */
public class Student extends Person {

	public Student() {
		super(); // 父类的无参构造
	}

	public Student(String name, int age, char sex, String color) {
		// super指代父类对象
		super(name, age, sex, color); // 父类的有参构造
	}
	
	public void study() {
		System.out.println("学习敲代码");
	}
	
	@Override
	public void sleep() {
		System.out.println("好好学习,睡什么睡");
	}
	
	public void sleepFromSuperclass() {
		// 通过super关键字调用父类的其他方法
		super.sleep();
	}
	
	//覆盖或者重写父类的方法
	public String toString() {
		return "Student [name=" + getName() + ", age=" + getAge() + ", sex=" + getSex() + ", color=" + getColor() + "]";
	}
	
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
java继承的注意事项
  1. java的继承是单继承,一个子类只能继承一个父类。
  2. 子类继承父类,创建子类对象,会先执行父类构造方法,再执行子类构造方法,无论是子类的有参还是无参,默认都会调用父类的无参构造。
  3. 子类不可以继承父类的私有属性、私有方法、构造方法、他包父类的默认属性和默认方法。
  4. 如果子类重写了父类方法,子类对象将会调用子类方法。
  5. 父类是抽象类,子类必须实现所有抽象方法,否则子类也是一个抽象类。
  6. 被final修饰的类,不能被继承,被final修饰的方法不能被重写。
  7. 如果一个类没有显示的继承父类,默认继承超级父类Object

引申以下概念:

重写

对继承来的父类方法进行重写

使用:

  1. 发生在父子类中
  2. 方法名相同,参数列表相同,返回值类型相同
  3. 权限修饰符范围不能比父类小
super vs this
  1. this代表本类对象的引用,super代表父类对象的引用
  2. this()代表本类构造方法,super()代表父类构造方法
  3. this和super代表构造方法,只能在构造方法中使用,并且必须是第一行,不能同时存在。
四大访问权限修饰符
访问修饰符含义作用范围
public公开的整个项目
protected受保护的本类、同包其他类、跨包子类
default默认的本类、同包其他类
private私有的本类

总结:

一个类继承自一个类它会获得那个类中的所有方法和属性,并且可以有自己的方法和属性

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/641930
推荐阅读
相关标签
  

闽ICP备14008679号