我是靠谱客的博主 慈祥红牛,最近开发中收集的这篇文章主要介绍11.继承、重写、权限修饰符继承、重写、权限修饰符,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

继承、重写、权限修饰符

继承(extends)

1.关键字

extends

2.继承父类的属性和方法,私有属性方法和构造方法除外。

3.创建子类对象,会先默认调用父类的无参构造方法

4.可以使用super关键字调用父类构造方法。

super():指代父类无参构造

super(…):指代父类有参构造

必须在子类构造方法的第一行代码

5.可以使用super关键字调用父类的非私有的属性和方法。

super.属性名

super.方法名()

6.java的继承是单继承

一个类只能继承一个父类,但是可以继承父类的父类中的内容。

package org.jgs2007.demo;
/**
* 爷爷类
*
如果没有显式继承父类,默认继承java.lang.Object类
*
* @author junki
* @date 2020年6月30日
*/
public class A {
public A() {
System.out.println("A无参构造");
}
}
package org.jgs2007.demo;
/**
* 父类
* @author junki
* @date 2020年6月30日
*/
public class B extends A {
public B() {
System.out.println("B无参构造");
}
}
package org.jgs2007.demo;
/**
* 子类
* @author junki
* @date 2020年6月30日
*/
public class C extends B {
public C() {
System.out.println("C无参构造");
}
}

7.继承实现的是“is a”的关系。

继承示例

教师类

package org.jgs2007.demo;
/**
* 教师类
* @author junki
* @date 2020年6月30日
*/
public class Teacher extends Person {
private int teacherId;
public Teacher() {
super();
}
public Teacher(String name, char sex, int age, int teacherId) {
super(name, sex, age);
this.teacherId = teacherId;
}
public int getTeacherId() {
return teacherId;
}
public void setTeacherId(int teacherId) {
this.teacherId = teacherId;
}
public void showInfo() {
System.out.println("name=" + getName() + ";sex=" + getSex() + ";age=" + getAge() + ";teacherId=" + this.teacherId);
}
}

学生类

package org.jgs2007.demo;
/**
* 学生类
* @author junki
* @date 2020年6月30日
*/
public class Student extends Person {
private int studentId;
public Student() {
}
public Student(String name, char sex, int age, int studentId) {
super(name, sex, age);
System.out.println("Student有参构造");
this.studentId = studentId;
}
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public void showInfo() {
System.out.println("name=" + getName() + ";sex=" + getSex() + ";age=" + getAge() + ";studentId=" + this.studentId);
}
}

人 类(作为父类)

package org.jgs2007.demo;
/**
*
人类
* @author junki
* @date 2020年6月30日
*/
public class Person {
private String name;
private char sex;
private int age;
public Person() {
System.out.println("Person无参构造");
}
public Person(String name, char sex, int age) {
System.out.println("Person有参构造");
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

方法的重写

原因

子类要对父类的方法做新的实现

条件

1.发生在父子类中

2.方法名、参数列表

3.子类的返回值类型可以和父类相同,也可以是父类返回值类型的子类

4.子类的权限修饰符范围不能小于父类

5.子类声明的异常不能比父类大

6.方法体可以不同

@override注解

@override注解,编译时检查重写方法是否在父类中存在

权限修饰符

1.public(公开的):任意作用域都可以使用

2.protected(受保护的):本包、本包子类、他包子类可用,他包不可用

3.默认不写:本包、本包子类可用,他包子类、他包不可用

4.private(私有的):本包可用,本包子类、他包子类、他包不可用

其他注意事项

//TODO注释

标记位置,打开task窗口可以快捷查看或跳转到此处

== 和 equals() 之间的区别

1.==是一个运算符,equals()是一个方法。

2.==可以用于比较基本数据类型,比较值相等;也可以比较引用数据类型,比较内存地址相等。

3.equals()只能用于比较引用数据类型,如果重写了equeals()方法,比较值相等,否则比较内存地址相等。

public static void main(String[] args) {
int a = 10;
int b = 11;
System.out.println(a == b);
String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
System.out.println(str1.equals(str2));
}

最后

以上就是慈祥红牛为你收集整理的11.继承、重写、权限修饰符继承、重写、权限修饰符的全部内容,希望文章能够帮你解决11.继承、重写、权限修饰符继承、重写、权限修饰符所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部