概述
1 继承的关键字
记住extends!!!!
2 继承的格式
继承一定二个类之间的关系。
格式:
public class 子类 extends 父类{
}
注意!!!!
在Java中只支持单继承。一个类只能有一个直接父类。
每个人只能有一个爹!!! 类也一样
class A{
}
public class B extends A{
}
3 继承之后的好处
子类可以使用父类的属性和方法。
子类可以使用父类所有的属性和方法。
只不过,当属性使用private修饰时,表示私有。
父类中声明的私有属性和方法,可以继承,但是不能使用。
4 继承关系的实现方式是什么
在Java中继承关系的实现方式: 是以为每一个子类实例配置一个其父类的实例。并使用super这个引用,从子类实例中指向父类实例。
B b = new B(); //new B(); 是要创建一个B类的实例。在创建B类实例时,发现B有父类A。就会再创建一个A类的实例。
内存展示如图:
5 创建两个实例(父类和子类的实例)时是先后顺序
根据上面的图。我们发现。创建子类实例时,也一定会创建一个父类实例。
实例的创建过程。一定要调用类的构造方法。
父类与子类之间的实例的创建顺序:先创建好父类实例,再创建好子类实例。
父类与子类构造方法的调用顺序:先调用子类构造方法,在子类构造方法的第一行调用父类构造方法。
示例代码:
class A {
private int i;
public A() {
System.out.println("A类默认构造方法!");
}
public void print(){
System.out.println("A.print()");
}
}
public class B extends A{
public B() {
System.out.println("B类默认构造方法!");
}
public static void main(String[] args) {
B b = new B();
b.print();//调用父类的方法。
}
}
输出结构:
A类默认构造方法!
B类默认构造方法!
A.print()
6 this 和super
this是一个在实例内部指向其自身实例的引用。
super是一个在子类实例内部指向其父类实例的引用。
(1) this
就三种用法
1 this() 在构造方法内部引用自身其他构造方法的格式。
2 this.属性 调用自身属性的格式
3 this.方法() 调用自身方法的格式
(2) super
就三种用法
1 super() 在子类构造方法的第一行,调用父类构造方法的格式。
2 super.属性 调用父类属性的格式
3 super.方法() 调用父类方法的格式。一般这个格式会在方法重写中出现。
示例代码:
class A {
private int i;
public A() {
System.out.println("A类默认构造方法!");
}
public A(int i){
this.i = i;
System.out.println("A类有参构造方法!");
}
public void print(){
System.out.println("A.print()");
}
}
public class B extends A{
public B() {
System.out.println("B类默认构造方法!");
}
public B(int i){
super(i);//向父类构造方法传参
System.out.println("B类有参构造方法!");
}
public static void main(String[] args) {
B b = new B();
b.print();//调用父类的方法。
B b1 = new B(10);
}
}
7 方法重写
方法重写:在父类与子类有相同的方法。这二个方法就叫方法重写。
class A {
public void print(){
System.out.println("A.print()");
}
}
public class B extends A{
public void print(){
System.out.println("B.print()");
}
//在子类(B)中重写了父类(A)继承过来的print方法。
}
当子类调用被重写的方法时,就近原则:先找到哪一个方法就调用哪一个方法
(1) 检查方法是否重写的注解
注解:当@Override报红就表示重写代码有问题
@Override
public void print(){
super.print();//调用父类的print()方法。
System.out.println("B.print()");
}
(2) 方法重载
方法重载:同类同名不同参
例如:println()这个方法
同类:同一个类中可以使用的方法。 不是同一个类中声明的方法。(子类从父类继承的方法就可以重载)
8 练习
1. 编写父类(Person)
有属性:姓名;
有方法:喊到(){
sout("大家好!我是XXXX");
}
2. 编写子类(Student)
有属性:学号和姓名;
有方法:喊到(){
sout("大家好!我是XXXX");
sout("我的学号是XXX!");
}
class Person {
private String name;
public Person(){
}
public Person(String name) {
this.name = name;
}
public void call(){
System.out.println("大家好!我是"+this.name);
}
}
public class Student extends Person{
private int sid;
public Student() {
}
public Student(String name, int sid) {
super(name);
this.sid = sid;
}
@Override
public void call(){
super.call();
System.out.println("大家好!我是"+this.getSid());
}
}
public static void main(String[] args) {
Student s1 = new Student();
s1.setSid(1);
s1.setName("张三");
s1.call();
}
最后
以上就是诚心铅笔为你收集整理的Java中的继承(语法)8 练习的全部内容,希望文章能够帮你解决Java中的继承(语法)8 练习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复