extends
super():指代父类无参构造
super(…):指代父类有参构造
必须在子类构造方法的第一行代码
super.属性名
super.方法名()
一个类只能继承一个父类,但是可以继承父类的父类中的内容。
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无参构造");
}
}
教师类
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
注解,编译时检查重写方法是否在父类中存在
1.public(公开的):任意作用域都可以使用
2.protected(受保护的):本包、本包子类、他包子类可用,他包不可用
3.默认不写:本包、本包子类可用,他包子类、他包不可用
4.private(私有的):本包可用,本包子类、他包子类、他包不可用
标记位置,打开task窗口可以快捷查看或跳转到此处
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));
}