Python 官方文档:入门教程 => 点击学习
目录写在前面1.子类的创建1.1子类的创建方法1.2调用父类中特定的构造方法2.在子类中访问父类成员3.覆盖3.1覆盖父类中的方法3.2用父类的对象访问子类的成员4.不可被继承的成员
类的继承可以在已有类的基础上派生出来新的类,不需要编写重复的代码,提高了代码的复用性,是面向对象程序设计的一个重要的特点,被继承的类叫做父类,由继承产生的新的类叫做子类,一个父类可以通过继承产生多个子类,但是与c++不同的是Java语言不支持多重继承,即不能由多个类派生出一个新的类,避免了由多重继承产生的歧义性,更加的安全。
子类继承父类的成员变量和成员方法,还可以修改父类的成员变量或者重写父类成员方法,还可以添加新的成员变量和方法,大大提高了代码的复用性。
所有的类都是直接或者间接的继承java.lang.Object类来的。
--------------?分割线?--------------
java语言中类的继承由关键字extends实现。
如果继承中没有使用extends关键字,则说明该类默认继承ava.lang.Object。
子类的每个对象也是父类的对象,所以在任何使用父类实例地方,都允许使用子类实例。
实例1:创建个人类Person,在以个人类为父类创建子类学生类Student类。(代码放在文末)
在Java继承中,程序执行时,子类会先调用父类的无参构造方法,进行初始化操作,但是如果父类中有多个构造函数,那么就需要在子类的构造方法中使用super()来调用父类中特定的构造方法。
实例2:super()调用父类中特定的构造方法(代码放在文末)
--------------?分割线?--------------
在子类中使用super()方法,可以访问父类中的特定的构造方法,还可以访问父类中的成员变量和成员方法。但是不能访问子类中添加的成员。
super.变量名
super.方法名
若父类成员申明为private,则子类中无法访问。
当子类覆盖父类的成员方法时,父类的对象可以访问子类的成员。只需要声明父类的变量指向子类的对象,此时可以访问子类覆盖父类的成员方法,但是不可以访问子类特有的成员方法。
定义在类中的final成员变量和定义在方法中的final局部变量,一旦给定就不能被修改,都属于是只读量,只能一次赋值。
--------------?分割线?--------------
如果一个变量同时被final和static修饰,则他的实质是一个常量,即static final。且这样的常量只能在定义的时候被赋值。如果一个变量只用final修饰而不用static,则只能被赋值一次,不能缺省。
实例1:
//实例1:类的继承,创建个人类Person,在以个人类为父类创建子类学生类Student类。
//filename:A_1.java
import java.io.*;
class Person{
private String name;
private int age;
public Person(){
System.out.println("调用Person类的构造方法");
}
public void setNameAge(String name,int age){
this.name=name;
this.age=age;
}
public void show(){
System.out.println("姓名:"+name+"年龄"+age);
}
}
class Student extends Person{
private String department;
public Student(){
System.out.println("调用Student类的构造方法");
}
public void setDepartment(String department){
this.department=department;
System.out.println("我是"+department+"的学生");
}
}
public class A_1{
public static void main(String[] args){
Student stu=new Student();
stu.setNameAge("张三",18);
stu.show();
stu.setDepartment("计算机专业");
}
}
实例2:
//实例2:super()调用父类中特定的构造方法
//filename:A_1.java
import java.io.*;
class Person{
private String name;
private int age;
public Person(){
System.out.println("调用Person类的无参构造方法");
}
public Person(String name,int age){
System.out.println("调用Person类的有参构造方法");
this.name=name;
this.age=age;
}
public void show(){
System.out.println("姓名:"+name+"年龄"+age);
}
}
class Student extends Person{
private String department;
public Student(){
System.out.println("调用Student类的无参构造方法");
}
public Student(String name,int age,String department){
super(name,age);
this.department=department;
System.out.println("我是"+department+"的学生");
System.out.println("调用Student类的有参构造方法");
}
}
public class A_1{
public static void main(String[] args){
Student stu1=new Student();
Student stu2=new Student("张三",18,"计算机专业");
stu1.show();
stu2.show();
}
}
到此这篇关于Java超详细讲解类的继承的文章就介绍到这了,更多相关Java类的继承内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java超详细讲解类的继承
本文链接: https://lsjlt.com/news/147588.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0