`
googlelc
  • 浏览: 56677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java学习笔记(二十一)继承

 
阅读更多

继承的基本概念:


1.1--继承的基本概念:

先看一下两个类

Person类和Student类

class Person
{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
};
class Student
{
private String name;
private int age;
private string school;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public void setSchool(String school){
this.school=school;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public String getSchool(){
return this.school;
}
};


类定义好了,但是这样是否合理呢》

两个类的部分代码是重复的。

但是从实际的角度看,这种实现肯定不好。
这就要使用继承的概念,
class Person
{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
};
class Student extends Person
{
//此处不添加任何代码
};
public class ExDemo01
{
public static void main(String args[]){
Student stu = new Student();
stu.setName("张三");
stu.setAge(18);
System.out.println("姓名:"+stu.getName()+"年龄:"+stu.getAge());
}
}

F:\java>java ExDemo01
姓名:张三,年龄:18

可以把父类的内容拿过来在子类中继续使用,这样,子类如果有一些重复的方法,将就不用重复定义了。


继承:子类继承父类,扩展已有类的功能。

1.2 extends关键字:成为扩展,子类也称为派生类。


class Person
{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
};
class Student extends Person
{
//此处添加代码
private String school;
public void setSchool(String school){
this.school=school;
}
public String getSchool(){
return this.school;
}
};
public class ExDemo01
{
public static void main(String args[]){
Student stu = new Student();
stu.setName("张三");
stu.setAge(18);
stu.setSchool("清华大学");
System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge()+",学校:"+stu.getSchool());
}
}


结果为:


F:\java>java ExDemo01
姓名:张三,年龄:18,学校:清华大学

F:\java>

1.3 继承的限制

在java中只允许单继承,不允许多继承。即一个子类只能继承一个父类,


class A{

};
class B
{

};
class C extends A,B
{

};


结果为:

F:\java>javac ExDemo02.java
ExDemo02.java:7: 需要 '{'
class C extends A,B{
^
1 错误

但是允许多层继承,即一个子类可以有一个父类,一个父类还可以有一个父类。

class A{

};
class B extends A{

};
class C extends B{

};

1.4:访问限制

子类是不能直接访问父类的私有成员的,但是子类可以调用父类的非私有方法,但是不能直接调用父类中的私有成员。
class Person
{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
};
class Student extends Person
{
//此处添加代码
public void fun(){
System.out.println(name);//错误
}

};
public class ExDemo02
{
public static void main(String args[]){
Student stu = new Student();
stu.setName("张三");
stu.fun();
}
}


F:\java>javac ExDemo01.java
ExDemo01.java:26: 类 ExDemo02 是公共的,应在名为 ExDemo02.java 的文件中声明
public class ExDemo02
^
ExDemo01.java:22: name 可以在 Person 中访问 private
System.out.println(name);//错误
^
2 错误

修改后的代码:

class Person
{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
};
class Student extends Person
{
//此处添加代码
public void fun(){
System.out.println(getName());//错误
}

};
public class ExDemo01
{
public static void main(String args[]){
Student stu = new Student();
stu.setName("张三");
stu.fun();
}
}


结果为:
F:\java>javac ExDemo01.java

F:\java>
F:\java>java ExDemo01
张三

F:\java>

分享到:
评论

相关推荐

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    Java学习笔记(必看经典).pdf

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    JAVA学习笔记 林信良

    《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...

    Java基础 学习笔记 Markdownr版

    本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    韩顺平编写的java学习笔记(全)

    ### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...

    瑜琅java学习笔记

    ### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun ...

    Java学习笔记(必看经典).doc

    这份“Java学习笔记(必看经典).doc”文档将涵盖Java的核心概念和重要知识点,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先,Java的基础部分通常包括以下几个方面: 1. **Java语法基础**:这是所有...

    Java学习笔记PPT

    这份"Java学习笔记PPT"是针对Java2版本的学习资源,旨在帮助初学者或有一定基础的开发者深入理解Java的核心概念和应用。 在Java学习的初期,掌握基本语法是至关重要的。Java的语法与C++有诸多相似之处,但更加强调...

    Java学习笔记.pdf

    Java学习笔记.pdf Java 是一种广泛应用的编程语言,它的开发环境、语言特点、基础语法等方面的知识是初学者必须掌握的。本资源提供了一个系统的 Java 学习笔记,涵盖了 Java 基础、面向对象、Java SE 核心等方面的...

    《Java学习笔记》

    这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习者全面掌握Java编程技术。笔记分为7个PDF部分,覆盖了从基础到高级的Java编程概念。 1. **Java基础知识**:这部分内容通常包括Java的历史背景、环境配置、...

    java学习笔记(全)

    Java学习笔记全集是针对Java编程语言的一份详尽的学习资料,它涵盖了从基础到进阶的各个层面,旨在帮助初学者系统地学习Java,并为有一定经验的开发者提供复习和巩固知识的平台。这份笔记主要关注Java语言的核心概念...

    java学习笔记(一个初学者的java学习笔记)

    ### Java学习笔记——基础知识详解 #### 一、Java基本数据类型及内存占用 Java作为一种广泛使用的编程语言,其基础数据类型对于理解程序的行为至关重要。Java提供了八种基本数据类型,分为数值型、字符型和布尔型...

    良葛格JAVA 学习笔记

    《良葛格JAVA 学习笔记》是由知名IT专家林信良,网名“良葛格”,在台湾大学电机工程学系的深厚学术背景基础上,结合其作为SUN教育训练中心讲师的丰富教学经验编写的。他的著作还包括《Spring 技术手册》,并且他...

    Java学习笔记(源码)

    【Java学习笔记(源码)】是一份详细记录了Java编程语言学习过程的资源集合,包含实际的源代码示例。这份笔记旨在帮助初学者和有一定经验的开发者深入理解和掌握Java语言的核心概念、语法以及常见应用。以下是笔记中...

    Java学习笔记非常详细

    以下是对Java学习笔记中提到的关键知识点的详细阐述: 1. **易用性**:Java的语法简洁,比C++更易于理解和学习。它的设计目标之一是让开发者能在各种平台上编写代码,而无需考虑底层硬件的复杂性。 2. **分布式...

    林信良java学习笔记

    《林信良Java学习笔记》是一本深受程序员喜爱的Java学习资源,尤其因其繁体字版,对于中文读者来说,提供了更为亲切的阅读体验。这本书深入浅出地讲解了Java编程语言的基础知识和高级特性,旨在帮助初学者快速掌握...

    良葛格java学习笔记

    《良葛格java学习笔记》是一份集合了Java学习精华的资源,主要针对初学者和对Java编程感兴趣的读者。这份笔记是由用户从良葛格的网站上精心整理并转化为CHM格式,便于阅读和查阅。CHM(Compiled Help Manual)是微软...

Global site tag (gtag.js) - Google Analytics