`
java1573
  • 浏览: 122897 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

为什么使用继承

阅读更多
示例:学生类(名称,年龄)。在没有封装对name和age的访问时所带来的问题。
package bu18;
publicclass Test2 {
   
    publicstaticvoid main(String[] args){
        Student stu1 = new Student();
        stu1.name = "张三";
        stu1.age = -20;
       
        System.out.println(stu1.name);
        System.out.println(stu1.age);
    }
}
 
class Student{
   
    public String name;
   
    publicintage;
}
 
 
输出:年龄小于零,不合乎逻辑。但是程序运行却是正常的,并没有报错。所以通过“.”直接访问成员变量的做法是不对的。
 
改进(规范):
1、  所有成员变量设置为private
2、  所有成员变量添加getter和setter方法。通常方法都是public的。
3、 在setter中设置成员的值,而在getter方法只是作单纯的显示功能。
    原则:所有的赋值语句都在set方法中,而get方法只是简单地返回值。
 
 
class Student{
   
    private String name;
   
    privateintage;
 
    publicint getAge() {
        returnage;
    }
 
    publicvoid setAge(int age) {
        if(age<0 ||age>150){
            System.out.println("日志:输入年龄不合法。"+age);
            age = 18;//学生默认18岁
        }
       
        this.age = age;
    }
 
    public String getName() {
        returnname;
    }
 
    publicvoid setName(String name) {
        this.name = name;
    }
   
}
 
封装总结:
1、  减少代码冗余,提高重用性
2、  提供一种访问机制,让使用者不能直接访问成员变量(常言道:通过公有方法来访问私有变量)。
3、  降低使用难度,使代码使用更为简单。
 
 
思考:在get方法中写,还是在set方法中写?
 
分享到:
评论

相关推荐

    javascript继承之为什么要继承.docx

    JavaScript 继承之为什么要继承 JavaScript 中的继承机制是指子类继承父类的属性和方法,使得子类可以拥有父类的所有特征。继承是面向对象编程的基本机制之一,它可以实现代码复用、提高编程效率和增强代码的可维护...

    java中继承的使用案例

    继承的使用 (1)声明一个人类Person,放入以你的姓名为包名的包中,姓名为private类型属性,性别为protected类型变量,年龄为默认访问类型变量;该类有两个构造方法Person()和Person(姓名,性别,年龄),构造...

    c#使用 和 继承 泛型类

    在C#编程语言中,泛型是面向对象编程的一...总的来说,C#中的泛型类和继承机制相结合,为开发者提供了强大的工具来构建模块化和高效的代码。通过理解并熟练运用这些概念,你可以编写出更易于维护、扩展和复用的C#程序。

    java继承类实例

    当子类的构造方法被调用时,会先执行父类的构造方法(如果有的话),这就是为什么在`Child`的构造方法中我们看到`super(name)`,它确保了父类的`name`也得到正确初始化。然后,子类自己的初始化逻辑才会被执行,即`...

    使用继承制作游戏

    游戏角色设计课题 练习课题:游戏角色设计课题。 角色 名称name 攻击力iattacklevel(100) 生命值ilife(100) 防御% fshield 普通攻击方法 Attack 大招,每个角色 大招不同 UniqueSkill 受攻击时做出反应...

    Java 实现继承实例代码

    这是因为Java遵循多态性原则,即子类对象可以被视为父类对象,但其行为可以体现出子类的特性。 ```java public class Main { public static void main(String[] args) { Child child = new Child(); child....

    c++继承与派生

    本节课程主要介绍C++中继承与派生的概念和使用方法,包括公有继承、私有继承和保护继承等不同的继承方式。通过实验和实践,掌握继承与派生的基本概念和使用方法。 继承的概念 继承是面向对象编程中的一种机制,它...

    使用jpa映射关联和继承

    本篇文章将深入探讨如何在JPA中映射关联和实现继承。 **一、JPA关联映射** 1. **一对一(OneToOne)映射**:一个实体对象对应数据库中的一个记录。通过`@OneToOne`注解来实现,可以是单向或双向。`@JoinColumn`...

    c++继承的视频

    - **信号与槽(Signals & Slots)**:Qt的事件驱动机制,通过继承QObject,可以使用信号和槽进行通信。 - **QWidget类**:用于构建图形用户界面的基本组件,继承自QObject。 - **自定义控件**:可以通过继承已有...

    (窗体继承)

    这个文件很可能是包含了基窗体和一个或多个子窗体的C#项目,通过阅读和分析代码,你可以了解如何定义和使用窗体继承。注意观察如何定义基窗体类,以及子窗体如何继承基窗体并添加自己的特性。通过这样的学习,你将...

    java继承部分课件

    在这个名为"java继承部分课件"的资料中,我们可以期待学习到关于Java继承的基础知识、应用场景以及最佳实践。 在Java中,继承是通过使用`extends`关键字来实现的。例如,如果我们有一个名为`Animal`的父类,我们...

    JS继承.txtJS继承.txt

    原型链继承是通过将一个对象设置为另一个对象的原型,从而实现继承的一种方法。这种方式简单直观,但存在一些缺点,比如不能向父类传递初始化参数,且所有实例共享同一个属性。 **示例代码解析**: ```javascript ...

    c++程序设计 继承与派生实验(二)

    在多继承的情况下,如果一个派生类同时继承了两个或多个基类,而这些基类又共享了一个共同的基类,那么不使用虚基类会导致"菱形问题",即派生类会有多个同一基类的副本。为解决这个问题,我们可以声明基类为虚基类,...

    Java--类的继承

    在Java编程语言中,类的继承是面向对象编程的一个核心概念,它允许我们创建新的类(子类)基于...通过实践,尝试创建自己的类层次结构,使用继承、接口和抽象类来解决问题,这将加深对这些概念的理解,并提高编程技能。

    WPF窗口直接类继承

    1. **代码复用**:所有继承`MyCustomWindow`的窗口都可以使用其上的通用方法和属性。 2. **更好的组织**:将通用功能封装到一个基类中,可以使代码结构更清晰。 3. **易于维护**:修改基类会影响到所有子类,便于...

    C++面向对象程序设计习题继承与派生.pdf

    在C++中,定义单继承的派生类可以使用以下格式: ```cpp class 派生类名 : 公有继承 基类名 { // ... }; ``` 定义多继承的派生类可以使用以下格式: ```cpp class 派生类名 : 公有继承 基类名1, 继承方式2 基类名2,...

    继承窗体的设计C#源码

    在C#中,我们可以使用":"运算符来表示类之间的继承关系。例如,如果我们有一个基础窗体类`BaseForm`,我们可以创建一个新窗体`DerivedForm`,像这样: ```csharp public class DerivedForm : BaseForm { // 新的...

    多重继承(6_7钻石继承问题)_C++_

    总的来说,多重继承在适当的情况下可以增强程序的灵活性,但应谨慎使用,尤其是在涉及到钻石继承的情况。正确理解和应用虚拟继承是避免二义性并解决钻石继承问题的关键。在实际编程中,可以考虑使用接口(interface...

    面向对象之二 继承(多重继承)

    然而,尽管多重继承提供了灵活性,但也要谨慎使用。过度依赖多重继承可能导致类层次结构复杂,增加理解和调试的难度。因此,在设计类结构时,应优先考虑单一继承,只有在确实需要组合多种特性的场景下才考虑多重继承...

    js继承.doc

    4. **寄生组合继承**:为避免上述问题,可以在子类构造器中调用父类构造器,然后使用`Object.create`或`for...in`复制父类`prototype`,避免了父类构造器的重复调用。 5. **ES6的类继承**:虽然JavaScript ES6引入...

Global site tag (gtag.js) - Google Analytics