概述
继承、重写、权限修饰符
继承(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.继承、重写、权限修饰符继承、重写、权限修饰符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复